Skip to content

Commit 92e11ea

Browse files
committed
several new operators; improved CSS
1 parent 841ecaa commit 92e11ea

File tree

1 file changed

+185
-16
lines changed

1 file changed

+185
-16
lines changed

operators.html

Lines changed: 185 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
dl#outer>dt { font-weight: bold; }
1212
dt { font-weight: normal;
1313
margin-right: -1.5em; }
14-
dt dt::before { content: "…"; }
14+
dl > dt::before { content: "…"; }
15+
dl#outer > dt::before { content: ""; }
1516
dd::before { content: ": "; }
1617
dd.sub::before { content: ""; }
1718

@@ -70,13 +71,72 @@
7071
</dl></dd>
7172
<dt>that completes without emitting items</dt>
7273
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Creating-Observables#empty"><code>empty(&#8239;)</code></a></dd>
73-
<dt>that only sends an error notification</dt>
74-
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Creating-Observables#error"><code>error(&#8239;)</code></a></dd>
7574
<dt>that does nothing at all</dt>
7675
<dd><a href="https://github.com/Netflix/RxJava/wiki/Creating-Observables#never"><code>never(&#8239;)</code></a></dd>
7776
</dl></dd>
7877

79-
<dt>I want to transform the items emitted by an Observable and then reemit them</dt>
78+
<dt>I want to create an Observable by combining other Observables</dt>
79+
<dd class="sub"><dl>
80+
<dt>emitting all of the items from all of the Observables in whatever order they are received</dt>
81+
<dd class="sub"><dl>
82+
<dt>where the source Observables are passed to the operator as parameters</dt>
83+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#merge"><code>merge(&hellip;)</code></a></dd>
84+
<dt>where the source Observables are found in an Array</dt>
85+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#merge"><code>merge(sequences)</code></a></dd>
86+
<dt>where the source Observables are found in an Iterable</dt>
87+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#merge"><code>merge(sequences)</code></a></dd>
88+
<dd class="sub"><dl>
89+
<dt>but I only want to process a certain number of them at once</dt>
90+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#merge"><code>merge(sequences,maxConcurrent)</code></a></dd>
91+
</dl></dd>
92+
<dt>where the source Observables are emitted from an Observable</dt>
93+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#merge"><code>merge(source)</code></a></dd>
94+
<dd class="sub"><dl>
95+
<dt>but I only want to process a certain number of them at once</dt>
96+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#merge"><code>merge(source,maxConcurrent)</code></a></dd>
97+
</dl></dd>
98+
<dt>but not forwarding any error notifications until all source Observables have terminated</dt>
99+
<dd class="sub"><dl>
100+
<dt>where the source Observables are emitted from an Observable</dt>
101+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#mergedelayerror"><code>mergeDelayError(source)</code></a></dd>
102+
<dt>where the source Observables are passed to the operator as parameters</dt>
103+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#mergedelayerror"><code>mergeDelayError(&hellip;)</code></a></dd>
104+
</dl></dd>
105+
</dl></dd>
106+
<dt>reducing an Observable that emits many Observables to one that emits as many Observables as I have processes to process them on</dt>
107+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#parallelmerge"><code>parallelMerge(&hellip;)</code></a></dd>
108+
<dt>by combining the items from two or more Observables sequentially to come up with new items to emit</dt>
109+
<dd class="sub"><dl>
110+
<dt>whenever each Observable has emitted a new item</dt>
111+
<dd class="sub"><dl>
112+
<dt>where the source Observables are found in an Iterable</dt>
113+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#zip"><code>zip(iterableOfObservables,zipFunction)</code></a></dd>
114+
<dt>where the source Observables are emitted by an Observable</dt>
115+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#zip"><code>zip(observableOfObservables,zipFunction)</code></a></dd>
116+
<dt>where the source Observables are passed to the operator as parameters</dt>
117+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#zip"><code>zip(&hellip;,zipFunction)</code></a></dd>
118+
</dl></dd>
119+
<dt>whenever any Observable has emitted a new item</dt>
120+
<dd class="sub"><dl>
121+
<dt>where the source Observables are found in a List</dt>
122+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#combinelatest"><code>combineLatest(sources,combineFunction)></code></a></dd>
123+
<dt>where the source Observables are passed to the operator as parameters</dt>
124+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#combinelatest"><code>combineLatest(&hellip;,combineFunction)></code></a></dd>
125+
</dl></dd>
126+
<dt>whenever an item is emitted by one Observable in a window defined by an item emitted by another</dt>
127+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#join-and-groupjoin"><code>join(&#8239;)</code></a></dd>
128+
<dd class="sub"><dl>
129+
<dt>based on an Observable that emits all items that have fallen in such a window</dt>
130+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#join-and-groupjoin"><code>groupJoin(&#8239;)</code></a></dd>
131+
</dl></dd>
132+
<dt>by means of <code>Pattern</code> and <code>Plan</code> intermediaries</dt>
133+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#and-then-and-when"><code>and/then/when</code></a></dd>
134+
</dl></dd>
135+
<dt>by always emitting the items from only the most-recently emitted of those Observables</dt>
136+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#switchonnext"><code>switchOnNext(&#8239;)</code></a></dd>
137+
</dl></dd>
138+
139+
<dt>I want emit the items from an Observable after transforming them</dt>
80140
<dd class="sub"><dl>
81141
<dt>one at a time with a function</dt>
82142
<dd><a href="https://github.com/Netflix/RxJava/wiki/Transforming-Observables#map"><code>map(&#8239;)</code></a></dd>
@@ -100,12 +160,46 @@
100160
<dt>and an initial seed value to get the ball rolling</dt>
101161
<dd><a href="https://github.com/Netflix/RxJava/wiki/Transforming-Observables#scan"><code>scan(accumulator,initialValue)</code></a></dd>
102162
</dl></dd>
163+
<dt>by combining them sequentially with the items in an Iterable by means of a function</dt>
164+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#zip"><code>zip(iterable,zipFunction)</code></a></dd>
165+
<dt>by attaching a timestamp to them</dt>
166+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Observable-Utility-Operators#timestamp"><code>timestamp(&#8239;)</code></a></dd>
167+
<dt>by emitting an indicator of the amount of time lapsed before the emission of the item</dt>
168+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Observable-Utility-Operators#itmeinterval"><code>timeInterval(&#8239;)</code></a></dd>
169+
</dl></dd>
170+
171+
<dt>I want to shift the items emitted by an Observable forward in time before reemitting them</dt>
172+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Observable-Utility-Operators#delay"><code>delay(delay,unit)</code></a></dd>
173+
<dd class="sub"><dl>
174+
<dt>with the amount of the shift calculated on a per-item basis</dt>
175+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Observable-Utility-Operators#delay"><code>delay(itemDelay)</code></a></dd>
176+
<dt>and the initial subscription to the Observable shifted as well</dt>
177+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Observable-Utility-Operators#delay"><code>delay(subscriptionDelay,itemDelay)</code></a></dd>
103178
</dl></dd>
104179

105180
<dt>I want to transform items <em>and</em> notifications from an Observable into items and reemit them</dt>
106181
<dd class="sub"><dl>
107182
<dt>by emitting all of the items emitted by corresponding Observables</dt>
108183
<dd><a href="https://github.com/Netflix/RxJava/wiki/Transforming-Observables#mergemap-and-mergemapiterable"><code>mergeMap(&#8239;)</code></a></dd>
184+
<dt>by wrapping them in <code>Notification</code> objects</dt>
185+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Observable-Utility-Operators#materialize"><code>materialize(&#8239;)</code></a></dd>
186+
<dd class="sub"><dl>
187+
<dt>which I can then unwrap again with</dt>
188+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Observable-Utility-Operators#dematerialize"><code>dematerialize(&#8239;)</code></a></dd>
189+
</dl></dd>
190+
</dl></dd>
191+
192+
<dt>I want to ignore all items emitted by an Observable and only pass along its completed/error notification</dt>
193+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Filtering-Observables#ignoreelements"><code>ignoreElements(&#8239;)</code></a></dd>
194+
195+
<dt>I want to mirror an Observable but prefix items to its sequence</dt>
196+
<dd class="sub"><dl>
197+
<dt>obtained from an Array or Iterable</dt>
198+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#startwith"><code>startWith(values)</code></a></dd>
199+
<dt>obtained from an Observable</dt>
200+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#startwith"><code>startWith(values)</code></a></dd>
201+
<dt>passed as parameters to the operator</dt>
202+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Combining-Observables#startwith"><code>startWith(&hellip;)</code></a></dd>
109203
</dl></dd>
110204

111205
<dt>I want to collect items from an Observable and reemit them as buffers of items</dt>
@@ -254,14 +348,14 @@
254348
<dt>based on a timer</dt>
255349
<dd class="sub"><dl>
256350
<dt>and emitting the most-recently emitted item in the period</dt>
257-
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Filtering-Observables#wiki-sample-or-throttlelast"><code>sample(time,unit)</code></a></dd>
351+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Filtering-Observables#sample-or-throttlelast"><code>sample(time,unit)</code></a></dd>
258352
<dt>and emitting the first-emitted item in the period</dt>
259353
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Filtering-Observables#throttlefirst"><code>throttleFirst(time,unit)</code></a></dd>
260354
</dl></dd>
261355
<dt>based on emissions from another Observable</dt>
262356
<dd class="sub"><dl>
263357
<dt>and emitting the most-recently emitted item in the period</dt>
264-
<dd><a href="https://github.com/Netflix/RxJava/wiki/Filtering-Observables#wiki-sample-or-throttlelast"><code>sample(sampler)</code></a></dd>
358+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Filtering-Observables#sample-or-throttlelast"><code>sample(sampler)</code></a></dd>
265359
<dt>and emitting the first-emitted item in the period</dt>
266360
<dd><a href="https://github.com/Netflix/RxJava/wiki/Filtering-Observables#throttlefirst"><code>throttleFirst(sampler)</code></a></dd>
267361
</dl></dd>
@@ -273,40 +367,115 @@
273367
<dt>based on emissions from another Observable</dt>
274368
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Filtering-Observables#throttlewithtimeout-or-debounce"><code>debounce(debounceSelector)</code></a></dd>
275369
</dl></dd>
276-
<dt>by suppressing items that are duplicates of already-emitted items<dt>
370+
<dt>by suppressing items that are duplicates of already-emitted items</dt>
277371
<dd><a href="https://github.com/Netflix/RxJava/wiki/Filtering-Observables#distinct"><code>distinct(&#8239;)</code></a></dd>
278372
<dd class="sub"><dl>
279-
<dt>according to a particular function<dt>
373+
<dt>according to a particular function</dt>
280374
<dd><a href="https://github.com/Netflix/RxJava/wiki/Filtering-Observables#distinct"><code>distinct(keySelector)</code></a></dd>
281-
<dt>if they immediatly follow the item they are duplicates of<dt>
375+
<dt>if they immediatly follow the item they are duplicates of</dt>
282376
<dd><a href="https://github.com/Netflix/RxJava/wiki/Filtering-Observables#distinctuntilchanged"><code>distinctUntilChanged(&#8239;)</code></a></dd>
283377
<dd class="sub"><dl>
284-
<dt>according to a particular function<dt>
378+
<dt>according to a particular function</dt>
285379
<dd><a href="https://github.com/Netflix/RxJava/wiki/Filtering-Observables#distinctuntilchanged"><code>distinct(keySelector)</code></a></dd>
286380
</dl></dd>
287381
</dl></dd>
382+
<dt>by delaying my subscription to it for some time after it begins emitting items</dt>
383+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Observable-Utility-Operators#delaysubscription"><code>delaySubscription(delay,unit)</code></a></dd>
288384
</dl></dd>
289385

290-
<dt>I want an Observable to notify observers of an error</dt>
386+
<dt>I want an Observable to emit exactly one item</dt>
291387
<dd class="sub"><dl>
292-
<dt>if a period of time elapses without it emitting an item</dt>
293-
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Filtering-Observables#timeout"><code>timeout(time,unit)</code></a></dd>
388+
<dt>so I want it to notify of an error otherwise</dt>
389+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Observable-Utility-Operators#single"><code>single(&#8239;)</code></a></dd>
390+
<dt>so I want it to notify of an error if it emits more than one, or a default item if it emits none</dt>
391+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Observable-Utility-Operators#single"><code>singleorDefault(&#8239;)</code></a></dd>
392+
<dt>that matches a predicate</dt>
393+
<dd class="sub"><dl>
394+
<dt>so I want it to notify of an error otherwise</dt>
395+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Observable-Utility-Operators#single"><code>single(predicate)</code></a></dd>
396+
<dt>so I want it to notify of an error if it emits more than one, or a default item if it emits none</dt>
397+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Observable-Utility-Operators#single"><code>singleorDefault(predicate)</code></a></dd>
398+
</dl></dd>
294399
</dl></dd>
295400

296-
<dt>I want to ignore all items emitted by an Observable and only pass along its completed/error notification</dt>
297-
<dd><a href="https://github.com/Netflix/RxJava/wiki/Filtering-Observables#ignoreelements"><code>ignoreElements(&#8239;)</code></a></dd>
401+
<dt>I want an Observable to retransmit items to observers who subscribe late</dt>
402+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Observable-Utility-Operators#cache"><code>cache(&#8239;)</code></a></dd>
403+
404+
<dt>I want an operator to operate on a particular Scheduler</dt>
405+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Observable-Utility-Operators#subscribeon"><code>subscribeOn(&#8239;)</code></a></dd>
406+
<dd class="sub"><dl>
407+
<dt>doing its processing in parallel on multiple threads without making the resulting Observable poorly-behaved</dt>
408+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Observable-Utility-Operators#parallel"><code>parallel(&#8239;)</code></a></dd>
409+
<dt>when it notifies Observers</dt>
410+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Observable-Utility-Operators#observeon"><code>observeOn(&#8239;)</code></a></dd>
411+
</dl></dd>
412+
413+
<dt>I want an Observable to invoke a particuar action</dt>
414+
<dd class="sub"><dl>
415+
<dt>whenever it emits an item</dt>
416+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Observable-Utility-Operators#dooneach"><code>doOnEach(action)</code></a></dd>
417+
<dt>when it issues a completed notification</dt>
418+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Observable-Utility-Operators#dooncompleted"><code>doOnCompleted(action)</code></a></dd>
419+
<dt>when it issues an error notification</dt>
420+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Observable-Utility-Operators#doonerror"><code>doOnError(action)</code></a></dd>
421+
<dt>when it issues a completed or error notification</dt>
422+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Observable-Utility-Operators#doonterminate"><code>doOnTerminate(action)</code></a></dd>
423+
<dt>after it has issued a completed or error notification</dt>
424+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Observable-Utility-Operators#finallydo"><code>finallyDo(action)</code></a></dd>
425+
<dt>whenever it emits an item or issues a completed/error notification</dt>
426+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Observable-Utility-Operators#dooneach"><code>doOnEach(observer)</code></a></dd>
427+
</dl></dd>
428+
429+
<dt>I want an Observable that will notify observers of an error</dt>
430+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Creating-Observables#error"><code>error(&#8239;)</code></a></dd>
431+
<dd class="sub"><dl>
432+
<dt>if a specified period of time elapses without it emitting an item</dt>
433+
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Filtering-Observables#timeout"><code>timeout(time,unit)</code></a></dd>
434+
</dl></dd>
298435

299436
<dt>I want an Observable to recover gracefully</dt>
300437
<dd class="sub"><dl>
301438
<dt>from a timeout by switching to a backup Observable</dt>
302439
<dd class="s"><a href="https://github.com/Netflix/RxJava/wiki/Filtering-Observables#timeout"><code>timeout(time,unit,fallback)</code></a></dd>
440+
<dt>from an upstream error notification</dt>
441+
<dd class="sub"><dl>
442+
<dt>by switching to a particular backup Observable</dt>
443+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Error-Handling-Operators#onerrorresumenext"><code>onErrorResumeNext(sequence)</code></a></dd>
444+
<dd class="sub"><dl>
445+
<dt>if and only if the error is an <code>Exception</code></dt>
446+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Error-Handling-Operators#onexceptionresumenext"><code>onExceptionResumeNext(&#8239;)</code></a></dd>
447+
</dl></dd>
448+
<dt>by switching to a backup Observable returned from a function that is passed the error</dt>
449+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Error-Handling-Operators#onerrorresumenext"><code>onErrorResumeNext(throwable,function)</code></a></dd>
450+
<dd class="sub"><dl>
451+
<dt>that continues to observe the source Observable in spite of the error termination</dt>
452+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Error-Handling-Operators#onerrorflatmap"><code>onErrorFlatMap(&#8239;)</code></a></dd>
453+
</dl></dd>
454+
<dt>by emitting a particular item and completing normally</dt>
455+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Error-Handling-Operators#onerrorreturn"><code>onErrorReturn(&#8239;)</code></a></dd>
456+
<dt>by attempting to resubscribe to the upstream Observable</dt>
457+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Error-Handling-Operators#retry"><code>retry(&#8239;)</code></a></dd>
458+
<dd class="sub"><dl>
459+
<dt>a certain number of times</dt>
460+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Error-Handling-Operators#retry"><code>retry(count)</code></a></dd>
461+
<dt>so long as a predicate remains true</dt>
462+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Error-Handling-Operators#retry"><code>retry(predicate)</code></a></dd>
463+
</dl></dd>
464+
</dl></dd>
465+
<dt>from being unserialized or otherwise poorly-behaved</dt>
466+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Observable-Utility-Operators#serialize"><code>serialize(&#8239;)</code></a></dd>
303467
</dl></dd>
304468

469+
<dt>I want to create a resource that has the same lifespan as the Observable</dt>
470+
<dd><a href="https://github.com/Netflix/RxJava/wiki/Observable-Utility-Operators#using"><code>using(&#8239;)</code></a></dd>
471+
305472
</dl>
306473
</div>
307474
<hr />
308475
<p>
309-
Ⓢ: a variant of this operator allows you to choose a particular Scheduler
476+
Ⓢ: a variant of this operator allows you to choose a particular Scheduler<br />
477+
</p><p>
478+
I have omitted parameter names from some methods where they are not necessary to distinguish variants of the method.
310479
</p>
311480
</body>
312481
</html>

0 commit comments

Comments
 (0)