javascript - ForkJoin 2 行为主题

标签 javascript typescript rxjs reactive-extensions-js

我有两个行为主题流,我想在没有运气的情况下进行 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/

相关文章:

typescript - 如何测试 cdk 堆栈中的引用类型值?

javascript - *ngIf 上使用的 Angular 4 构造函数值

angular - 类正在使用 Angular 功能,但没有装饰。请添加一个显式的 Angular 装饰器

javascript - 错误 : Cannot find module "rxjs/operators" in Ionic Angular

javascript - 如何检查div前面的滚动位置

JavaScript AngularJS 在 HTML 中调用函数

angular - 我应该为不同的订阅使用多个 BehaviorSubject 吗?

javascript - 更智能的缓冲器

javascript - JavaScript 中的高级路由

javascript - 从 JavaScript 触发事件