gpt4 book ai didi

javascript - 合并两个 RxJS 流(基于同步)

转载 作者:数据小太阳 更新时间:2023-10-29 05:32:25 26 4
gpt4 key购买 nike

我有两个 RxJS 主题,比如说 ab 我需要以某种方式组合它们。

someComboOfAandB.subscribe({aVal, bVal} => console.log("value:", aVal, bVal));

我想将它们结合起来,这样如果 ab 同步更新,那么值会一起传递:

a.next(1);
// some code
b.next(2)

// at end of synchronous code / frame:
// value: 1 2

但是,如果只更新一个值,仍然会同时推送更新,同时推送具有两个新值的更新:

a.next(5)

// at end of synchronous code / frame:
// value: 5 2

这可能吗?如果是,怎么会这样?即使可能,是否应该避免?

最佳答案

您应该能够使用 Scheduler 来实现您想要的行为:

import "rxjs/add/observable/combineLatest";
import "rxjs/add/operator/map";

import { BehaviorSubject } from "rxjs/BehaviorSubject";
import { Observable } from "rxjs/Observable";
import { asap } from "rxjs/scheduler/asap";

let a = new BehaviorSubject(1);
let b = new BehaviorSubject(2);
let combined = Observable
.combineLatest(a, b, asap)
.map((values) => ({ aVal: values[0], bVal: values[1] }));

combined.subscribe(
({ aVal, bVal }) => { console.log("value:", aVal, bVal); }
);

a.next(3);
b.next(4);

以上代码会输出如下内容:

value: 3 4

如果未指定 asap Scheduler,则输出为:

value: 1 2
value: 3 2
value: 3 4

RxJS GitHub 存储库包含一些 Scheduler documentation .

关于javascript - 合并两个 RxJS 流(基于同步),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39259132/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com