gpt4 book ai didi

rxjs - 有没有像等到第一个运算符(operator)那样的东西?

转载 作者:行者123 更新时间:2023-12-04 19:31:09 25 4
gpt4 key购买 nike

我有两个可观察的 one$two$ ;

我要 one$仅在至少触发了 two$ 一次时触发。这我认为本质上是skipUntil运算符(operator)。

one$.skipUntil(two$).subscribe()

但是让我们说 one$已开火 ​​ two$没有。我想要一个流记住 one$ 的行为已开火并将至少开火一次 two$做过。

干杯

最佳答案

这看起来您可以使用 zip()发出 n 的运算符仅当其所有源 Observables 都发出 n第一项:

const one$ = Observable.from(['a1', 'a2', 'a3'], Scheduler.async);
const two$ = Observable.from(['b1'], Scheduler.async);

Observable.zip(one$, two$, (v1, v2) => v1)
.subscribe(val => console.log(val));

我正在添加 Scheduler.async仅用于模拟异步行为(有关更多信息,请参阅 combineLatest behaviour in Rxjs 5?)

这将打印到控制台:
a1

只有当您知道 one$ 时才可以只会发射一次。

最终你可以使用 combineLatest()需要它的所有源 Observables 至少发射一个项目,然后发射任何你可以忽略的发射 two$带有选择器功能。
const one$ = Observable.from(['a1', 'a2', 'a3'], Scheduler.async);
const two$ = Observable.from(['b1', 'b2'], Scheduler.async);

Observable.combineLatest(one$, two$.take(1), (v1, v2) => v1)
.subscribe(val => console.log(val));

我们知道我们只想要来自 two$ 的第一项。 ,其余的可以忽略。
这将打印到控制台:
a1
a2
a3

关于rxjs - 有没有像等到第一个运算符(operator)那样的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43652873/

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