Observable.zip(觀測量)
我非常建議Observable.zip方法,它是在reactiveX documentation說明:
組合多個觀測量來創建一個可觀察它們的值是根據其每個輸入觀測值的值按順序計算。
// Results
name: string;
document: string;
// Observables to combine
const name$ = this._personService.getName(id);
const document$ = this._documentService.getDocument();
Observable
.zip(name$, document$, (name: string, document: string) => ({name, document}))
.subscribe(pair => {
this.name = pair.name;
this.document = pair.document;
this.showForm();
})
在一個側面說明,最後一個參數,在這裏我們提供的功能
,(name: string, document: string) => ({name, document})
是可選的。您可以跳過它,或執行更復雜的操作:
如果最新參數是一個函數,則使用此函數根據輸入值計算創建的值。否則,返回一個輸入值數組。
所以,如果你跳過最後一部分,你會得到一個數組:可觀察的
// Results
name: string;
document: string;
// Observables to combine
const name$ = this._personService.getName(id);
const document$ = this._documentService.getDocument();
Observable
.zip(name$, document$)
.subscribe(pair => {
this.name = pair['0'];
this.document = pair['1'];
this.showForm();
})
forkJoin https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/forkjoin.md –
什麼我明白了,你已經是,憑藉'concat' – user3743222
@ user3743222在這種情況下,這些值被單獨發射。一個接一個。 – gog