我有两个行为主题流,我想在没有运气的情况下进行 forkJoin。 正如我想象的那样,它返回了它的最后两个值。这有可能以某种方式实现吗?
它不是在主语之后调用的。
let stream1 = new BehaviorSubject(2);
let stream2 = new BehaviorSubject('two');
Observable.forkJoin(stream1, stream2)
.subscribe(r => {
console.log(r);
});
最佳答案
注意什么forkJoin()
实际上从它的文档中做到了:
Wait for Observables to complete and then combine last values they emitted.
这意味着 forkJoin()
在所有输入 Observable 完成时发出一个值。当使用 BehaviorSubject
时,这意味着对它们都显式调用 complete()
:
import { Observable, BehaviorSubject, forkJoin } from 'rxjs';
const stream1 = new BehaviorSubject(2);
const stream2 = new BehaviorSubject('two');
forkJoin(stream1, stream2)
.subscribe(r => {
console.log(r);
});
stream1.complete();
stream2.complete();
查看现场演示:https://stackblitz.com/edit/rxjs-9nqtx6
2019 年 3 月:针对 RxJS 6 进行了更新。
关于javascript - ForkJoin 2 行为主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39722440/