所以基本上我想用 forkJoin 從 3 個 observables 中獲取資料,一旦它們發出值,我想發出另一個 observable 表單訂閱邏輯,所以我可以從另一個地方訂閱它。我現在擁有的
getOptionsArray = <T>(): Observable<any> => {
forkJoin([
get1(),
get2(),
get3()
]).subscribe(([data1, data2, data3]) => {
// some necessary assignment logic which needs to be here...
// here I want to emit observable so I can subscribe to getOptionsArray method from
// another place, but only after logic in subcription here is applied.
})
}
我知道我可以只回傳forkJoin并從另一個地方訂閱它,但我需要先在這個函式內部做一些賦值邏輯,然后一旦應用這個邏輯,我想從這個方法回傳 observable 我可以從另一個訂閱地方。
uj5u.com熱心網友回復:
您有 2 個選項:
getOptionsArray = <T>(): Observable<any> => {
return forkJoin([
get1(),
get2(),
get3()
]).pipe(map([data1, data2, data3]) => {
...
return result;
}))
}
要么
getOptionsArray = <T>(): Observable<any> => {
let subject = new Subject();
forkJoin([
get1(),
get2(),
get3()
]).subscribe(([data1, data2, data3]) => {
...
subject.next(result);
subject.completes();
});
return subject.asObservable();
}
我更喜歡第一個。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/452432.html
