-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtree.yml
412 lines (412 loc) · 15.4 KB
/
tree.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
---
children:
- label: '我有一个 Observable,'
children:
- label: 我想把 Observable 每次产生的值
children:
- label: 改为一个固定的值
children:
- label: mapTo
- label: 根据一个函数改成某个值
children:
- label: map
- label: 我想挑出 Observable 每次产生的值的某个属性I want to pick a property off each emitted value
children:
- label: pluck
- label: 我想在 Observable 每次产生值的时候,执行一个回调,并且不影响它所产生的值I want to spy the values being emitted without affecting them
children:
- label: do
- label: 我想筛选 Observable 所产生的值I want to allow some values to pass
children:
- label: 我想根据自定义的函数来筛选值 based on custom logic
children:
- label: filter
- label: 我想筛选出 Observable 产生的前几个值if they are at the start of the Observable
children:
- label: 而且只要第一个
children:
- label: first
- label: 而且只要前几个
children:
- label: take
- label: 只要满足某个条件,就有多少要多少based on custom logic
children:
- label: takeWhile
- label: 我想筛选出第 n 个值if they are exactly the n-th emission
children:
- label: elementAt
- label: 我想筛选出 Observable 产生的前几个值if they are at the end of the Observable
children:
- label: 而且只要最后一个and only the last value
children:
- label: last
- label: 而且只要最后几个based on a given amount
children:
- label: takeLast
- label: 我想要所有的值,直到另一个 Observable 产生了值或者完成了until another Observable emits a value or completes
children:
- label: takeUntil
- label: 我想忽略某些值I want to ignore values
children:
- label: 我想忽略所有的值???
children:
- label: ignoreElements
- label: 我想忽略 Observable 的前几个值 from the start of the Observable
children:
- label: 只忽略前几个
children:
- label: skip
- label: 只要满足一定条件就忽略based on custom logic
children:
- label: skipWhile
- label: 我想忽略 Observable 的最后一个值from the end of the Observable
children:
- label: skipLast
- label: 我想忽略所有的值,直到另一个 Observable 产生了值或者完成了until another Observable emits a value
children:
- label: skipUntil
- label: 我想根据之前产生的值来忽略某些值that match some previous value
children:
- label: 如果新产生的值和之前产生过的一个值相等according to value equality
children:
- label: 并且新产生的值正好是那个值的下一个emitted just before the current value
children:
- label: distinctUntilChanged
- label: 并且这个新产生的值不需要正好是那个值的下一个emitted some time in the past
children:
- label: distinct
- label: 如果新产生的值的某个属性和之前的产生过的值的某个属性相等???according to a key or object property
children:
- label: 并且新产生的值正好是那个值的下一个
children:
- label: distinctUntilKeyChanged
- label: 我想忽略产生频率太快的值
children:
- label: 我想忽略掉每段时间窗口中除了第一个产生的值以外的所有值by emitting the first value in each time window
children:
- label: "where time windows are determined by another Observable's emissions"
children:
- label: throttle
- label: where time windows are determined by a time duration
children:
- label: throttleTime
- label: by emitting the last value in each time window
children:
- label: "where time windows are determined by another Observable's emissions"
children:
- label: audit
- label: where time windows are determined by a time duration
children:
- label: auditTime
- label: by emitting the last value as soon as enough silence has occured
children:
- label: where the silence duration threshold is determined by another Observable"
children:
- label: debounce
- label: where the silence duration threshold is determined by a time duration
children:
- label: debounceTime
- label: I want to compute a formula using all values emitted
children:
- label: and only output the final computed value
children:
- label: reduce
- label: and output the computed values when the source emits a value
children:
- label: scan
- label: and output the computed values as a nested Observable when the source emits a value
children:
- label: mergeScan
- label: I want to wrap its messages with metadata
children:
- label: that describes each notification (next, error, or complete)
children:
- label: materialize
- label: that includes the time past since the last emitted value
children:
- label: timeInterval
- label: after a period of inactivity
children:
- label: I want to throw an error
children:
- label: timeout
- label: I want to switch to another Observable
children:
- label: timeoutWith
- label: I want to ensure there is only one value
children:
- label: single
- label: I want to know how many values it emits
children:
- label: count
- label: I want to prepend one value
children:
- label: startWith
- label: I want to delay the emissions
children:
- label: based on a given amount of time
children:
- label: delay
- label: based on the emissions of another Observable
children:
- label: delayWhen
- label: I want to group the values
children:
- label: until the Observable completes
children:
- label: and convert to an array
children:
- label: toArray
- label: and convert to a Promise
children:
- label: toPromise
- label: consecutively in pairs, as arrays
children:
- label: pairwise
- label: 'based on a criterion, and output two Observables: those that match the criterion and those that do not'
children:
- label: partition
- label: in batches of a particular size
children:
- label: and emit the group as an array
children:
- label: bufferCount
- label: and emit the group as a nested Observable
children:
- label: windowCount
- label: based on time
children:
- label: and emit the group as an array
children:
- label: bufferTime
- label: and emit the group as a nested Observable
children:
- label: windowTime
- label: until another Observable emits
children:
- label: and emit the group as an array
children:
- label: buffer
- label: and emit the group as a nested Observable
children:
- label: window
- label: based on the emissions of an Observable created on-demand
children:
- label: and emit the group as an array
children:
- label: bufferWhen
- label: and emit the group as a nested Observable
children:
- label: windowWhen
- label: based on another Observable for opening a group, and an Observable for closing a group
children:
- label: and emit the group as an array
children:
- label: bufferToggle
- label: and emit the group as a nested Observable
children:
- label: windowToggle
- label: based on a key calculated from the emitted values
children:
- label: groupBy
- label: I want to start a new Observable for each value
children:
- label: and emit the values from all nested Observables in parallel
children:
- label: where the nested Observable is the same for every value
children:
- label: mergeMapTo
- label: where the nested Observable is calculated for each value
children:
- label: mergeMap
- label: and emit the values from each nested Observable in order
children:
- label: where the nested Observable is the same for every value
children:
- label: concatMapTo
- label: where the nested Observable is calculated for each value
children:
- label: concatMap
- label: and cancel the previous nested Observable when a new value arrives
children:
- label: where the nested Observable is the same for every value
children:
- label: switchMapTo
- label: where the nested Observable is calculated for each value
children:
- label: switchMap
- label: and ignore incoming values while the current nested Observable has not yet completed
children:
- label: exhaustMap
- label: and recursively start a new Observable for each new value
children:
- label: expand
- label: I want to perform custom operations without breaking the chained calls API
children:
- label: let
- label: I want to share a subscription between multiple subscribers
children:
- label: using a conventional Subject
children:
- label: and start it as soon as the first subscriber arrives
children:
- label: share
- label: and start it manually or imperatively
children:
- label: publish
- label: using a BehaviorSubject
children:
- label: publishBehavior
- label: using a ReplaySubject
children:
- label: publishReplay
- label: using an AsyncSubject
children:
- label: publishLast
- label: using a specific subject implementation
children:
- label: multicast
- label: and make it behave like a cache
children:
- label: cache
- label: when an error occurs
children:
- label: I want to start a new Observable
children:
- label: catch
- label: I want to re-subscribe
children:
- label: immediately
children:
- label: retry
- label: when another Observable emits
children:
- label: retryWhen
- label: when it completes
children:
- label: I want to re-subscribe
children:
- label: immediately
children:
- label: repeat
- label: when another Observable emits
children:
- label: repeatWhen
- label: I want to start a new Observable
children:
- label: concat
- label: when it completes, errors or unsubscribes, I want to execute a function
children:
- label: finally
- label: I want to change the scheduler
children:
- label: that routes calls to subscribe
children:
- label: subscribeOn
- label: that routes values to observers
children:
- label: observeOn
- label: I want to combine this Observable with others, and
children:
- label: I want to receive values only from the Observable that emits a value first
children:
- label: race
- label: I want to output the values from either of them
children:
- label: merge
- label: I want to output a value computed from values of the source Observables
children:
- label: using the latest value of each source whenever any source emits
children:
- label: combineLatest
- label: using the latest value of each source only when the primary Observable emits
children:
- label: withLatestFrom
- label: using each source value only once
children:
- label: zip
- label: 'I have some Observables to combine together as one Observable, and'
children:
- label: I want to receive values only from the Observable that emits a value first
children:
- label: Observable.race
- label: I want to be notified when all of them have completed
children:
- label: Observable.forkJoin
- label: I want to output the values from either of them
children:
- label: Observable.merge
- label: I want to output a value computed from values of the source Observables
children:
- label: using the latest value of each source whenever any source emits
children:
- label: Observable.combineLatest
- label: using each source value only once
children:
- label: Observable.zip
- label: I want to subscribe to each in order
children:
- label: Observable.concat
- label: 'I have no Observables yet, and'
children:
- label: I want to create a new Observable
children:
- label: using custom logic
children:
- label: Observable.create
- label: using a state machine similar to a for loop
children:
- label: Observable.generate
- label: that throws an error
children:
- label: Observable.throw
- label: that just completes, without emitting values
children:
- label: Observable.empty
- label: that never emits anything
children:
- label: Observable.never
- label: from an existing source of events
children:
- label: coming from the DOM or Node.js or similar
children:
- label: Observable.fromEvent
- label: that uses an API to add and remove event handlers
children:
- label: Observable.fromEventPattern
- label: from an ES6 Promise
children:
- label: Observable.fromPromise
- label: from a Promise or an event source or an array
children:
- label: Observable.from
- label: that iterates
children:
- label: over the values in an array
children:
- label: Observable.fromArray
- label: over values in a numeric range
children:
- label: Observable.range
- label: over prefined values given as arguments
children:
- label: Observable.of
- label: that emits values on a timer
children:
- label: regularly
children:
- label: Observable.interval
- label: with an optional initial delay
children:
- label: Observable.timer
- label: which is built on demand when subscribed
children:
- label: Observable.defer
- label: I want to convert a callback to an Observable
children:
- label: supporting a conventional callback API
children:
- label: Observable.bindCallback
- label: supporting Node.js callback style API
children:
- label: Observable.bindNodeCallback