gpt4 book ai didi

angular - Rxjs 返回顺序运行的两个 observable 的第一个结果

转载 作者:行者123 更新时间:2023-12-01 13:30:04 26 4
gpt4 key购买 nike

我需要依次运行两个 observable 并仅返回第一个 observable 的结果。第二个 observable 需要在运行前完成第一个。

我找到了一种解决方法,但我并不满意。你可以在这里测试:plunker test

const first = Observable.of(10).delay(1000).do(res => console.log('first'));
const second = Observable.of(20).do(res => console.log('second'));
console.log('start');
const test = first.concatMap(ev => second.map(x=> ev)).subscribe(res =>
console.log(res));

我认为(并且我希望!)存在更好的解决方案,但我找不到它。
在此先感谢您的帮助。

最佳答案

我内部翻译flatMapthen在我的脑海里,所以我希望看到类似......

const first = Observable.of(10).delay(1000).do(res => console.log('first'));
const second = Observable.of(20).do(res => console.log('second'));
const test = first.flatMap(rsp => { return second.mapTo(rsp); });

它与您发布的内容并没有什么不同,但从直觉上讲,这对我来说更有意义,因为我不会开始考虑 concat手术。

更新:

我想你也可以这样做...
const test = first.delayWhen(() => second.mapTo(0));

...但我不确定这是否更具可读性。

关于angular - Rxjs 返回顺序运行的两个 observable 的第一个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46407138/

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