W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
接受 Array
of ObservableInput
或 of 的字典 Object
,ObservableInput
并返回,Observable
其發(fā)出與傳遞的數(shù)組完全相同的順序的值數(shù)組或與傳遞的字典具有相同形狀的值的字典。
forkJoin(...sources: any[]): Observable
<any>
sources | 以數(shù)組或參數(shù)形式直接傳遞給運(yùn)算符的任意數(shù)量的 Observables。 |
---|---|
Observable<any>
:可觀察對象發(fā)出由傳遞的可觀察對象發(fā)出的最后一個(gè)值的數(shù)組或項(xiàng)目函數(shù)中的值。
等待 Observable 完成,然后合并它們發(fā)出的最后一個(gè)值。
forkJoin
是一個(gè)運(yùn)算符,它接受任意數(shù)量的輸入可觀察值,這些輸入可觀察值可以作為輸入可觀察值的數(shù)組或字典傳遞。如果沒有提供可觀察的輸入,則結(jié)果流將立即完成。
forkJoin
將等待所有傳遞的可觀察變量完成,然后它將發(fā)出一個(gè)數(shù)組或一個(gè)對象,該數(shù)組或?qū)ο缶哂衼碜韵鄳?yīng)可觀察變量的最后一個(gè)值。
如果將 n
可觀察 n
變量數(shù)組傳遞給運(yùn)算符,則結(jié)果數(shù)組將具有值,其中第一個(gè)值是第一個(gè)可觀察變量發(fā)出的最后一個(gè)值,第二個(gè)值是第二個(gè)可觀察變量發(fā)出的最后一個(gè)值,依此類推。
如果將可觀察性字典傳遞給操作員,則生成的對象將具有與傳遞的字典相同的鍵,并且它們發(fā)出的最后值位于相應(yīng)的鍵處。
這意味著 forkJoin
發(fā)射不會超過一次,并且將在此之后完成。如果您不僅需要在傳遞的可觀察變量的生命周期結(jié)束時(shí)發(fā)出組合值,還需要在整個(gè)過程中發(fā)出組合值,請嘗試一下 combineLatest
或 zip
改為嘗試。
為了使所得數(shù)組的長度與輸入可觀察數(shù)的長度相同,每當(dāng)任何一個(gè)可觀察項(xiàng)完成而沒有發(fā)出任何值時(shí),forkJoin
該時(shí)刻也將完成,并且即使已經(jīng)有一些最后一個(gè)也不會發(fā)出任何東西其他觀測值的值。相反,如果存在一個(gè)永不完備的可觀察物,那么也 forkJoin
將永遠(yuǎn)也不會完成,除非在任何時(shí)候任何其他可觀察的完備物都沒有產(chǎn)生價(jià)值,這使我們回到了前面的情況。總的來說,為了 forkJoin
發(fā)出一個(gè)值,作為參數(shù)傳遞的所有可觀察對象必須發(fā)出至少一次且完整的東西。
如果在某個(gè)點(diǎn)有任何輸入的可觀察錯(cuò)誤,那么 forkJoin
也會發(fā)生錯(cuò)誤,所有其他可觀察變量將立即取消訂閱。
(可選)forkJoin
接受項(xiàng)目函數(shù),該函數(shù)將使用通常會位于發(fā)射數(shù)組中的值來調(diào)用。無論項(xiàng)目功能返回什么,它將顯示在可觀察的輸出中。這意味著可以將默認(rèn)項(xiàng)目視為具有所有自變量并將其放入數(shù)組的函數(shù)。請注意,僅當(dāng)假定可觀察的輸出會發(fā)出結(jié)果時(shí),才調(diào)用項(xiàng)目函數(shù)。
import { forkJoin, of, timer } from 'rxjs';
const observable = forkJoin({
foo: of(1, 2, 3, 4),
bar: Promise.resolve(8),
baz: timer(4000),
});
observable.subscribe({
next: value => console.log(value),
complete: () => console.log('This is how it ends!'),
});
// Logs:
// { foo: 4, bar: 8, baz: 0 } after 4 seconds
// "This is how it ends!" immediately after
import { forkJoin, of } from 'rxjs';
const observable = forkJoin([
of(1, 2, 3, 4),
Promise.resolve(8),
timer(4000),
]);
observable.subscribe({
next: value => console.log(value),
complete: () => console.log('This is how it ends!'),
});
// Logs:
// [4, 8, 0] after 4 seconds
// "This is how it ends!" immediately after
forkJoin(v1: SubscribableOrPromise<T>): Observable<[T]>
參量: | 類型: |
---|---|
v1 | 類型:SubscribableOrPromise |
returnsObservable<[T]>
forkJoin(v1: any, v2: any): Observable<[T, T2]>
參量: | 類型: |
---|---|
v1 | 類型:any |
v2 | 類型:any |
returnsObservable<[T, T2]>
forkJoin(v1: any, v2: any, v3: any): Observable<[T, T2, T3]>
參量: | 類型: |
---|---|
v1 | 類型:any |
v2 | 類型:any |
v3 | 類型:any |
returnsObservable<[T, T2, T3]>
forkJoin(v1: any, v2: any, v3: any, v4: any): Observable<[T, T2, T3, T4]>
參量: | 類型: |
---|---|
v1 | 類型:any |
v2 | 類型:any |
v3 | 類型:any |
v4 | 類型:any |
returnsObservable<[T, T2, T3, T4]>
forkJoin(v1: any, v2: any, v3: any, v4: any, v5: any): Observable<[T, T2, T3, T4, T5]>
參量: | 類型: |
---|---|
v1 | 類型:any |
v2 | 類型:any |
v3 | 類型:any |
v4 | 類型:any |
v5 | 類型:any |
returnsObservable<[T, T2, T3, T4, T5]>
forkJoin(v1: any, v2: any, v3: any, v4: any, v5: any, v6: any): Observable<[T, T2, T3, T4, T5, T6]>
參量: | 類型: |
---|---|
v1 | 類型:any |
v2 | 類型:any |
v3 | 類型:any |
v4 | 類型:any |
v5 | 類型:any |
v6 | 類型:any |
returnsObservable<[T, T2, T3, T4, T5, T6]>
forkJoin(sources: [any]): Observable<[A]>
參量: | 類型: |
---|---|
sources | 類型:[any] |
returnsObservable<[A]>
forkJoin(sources: [any, any]): Observable<[A, B]>
參量: | 類型: |
---|---|
sources | 類型:[any, any] |
returnsObservable<[A, B]>
forkJoin(sources: [any, any, any]): Observable<[A, B, C]>
參量: | 類型: |
---|---|
sources | 類型:[any, any, any] |
returnsObservable<[A, B, C]>
forkJoin(sources: [any, any, any, any]): Observable<[A, B, C, D]>
參量: | 類型: |
---|---|
sources | 類型:[any, any, any, any] |
returnsObservable<[A, B, C, D]>
forkJoin(sources: [any, any, any, any, any]): Observable<[A, B, C, D, E]>
參量: | 類型: |
---|---|
sources | 類型:[any, any, any, any, any] |
returnsObservable<[A, B, C, D, E]>
forkJoin(sources: [any, any, any, any, any, any]): Observable<[A, B, C, D, E, F]>
參量: | 類型: |
---|---|
sources | 類型:[any, any, any, any, any, any] |
returnsObservable<[A, B, C, D, E, F]>
forkJoin(sources: A): Observable<ObservedValuesFromArray<A>[]>
參量: | 類型: | |
---|---|---|
sources | 類型:A |
returnsObservable<ObservedValuesFromArray<A>[]> |
forkJoin(sourcesObject: {}): Observable<never>
參量: | 類型: |
---|---|
sourcesObject | 類型:{} |
returnsObservable<never>
forkJoin(sourcesObject: T): Observable<{ [K in keyof T]: ObservedValueOf<T[K]>; }>
參量: | 類型: |
---|---|
sourcesObject | 類型:T |
returnsObservable<{ [K in keyof T]: ObservedValueOf<T[K]>; }>
forkJoin(...args: any[]): Observable<any>
參量: | 類型: |
---|---|
args | 類型:any[] |
returnsObservable<any>
forkJoin(...sources: any[]): Observable<T[]>
參量: | 類型: |
---|---|
sources | 類型:any[] |
returnsObservable<T[]> |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: