gpt4 book ai didi

javascript - 可观察等待方法完成

转载 作者:行者123 更新时间:2023-11-28 12:17:55 25 4
gpt4 key购买 nike

我想并行运行方法 A 和 B,一旦它们都完成,我想运行方法 C。

如何使用 Observable 在 javascript 中实现此目的?

main() {

this.methodA();
if(some_condition) this.methodB();
this.methodC();

}

methodA() {
setTimeout( () => { console.log("doing some work A"); }, 500);
}

methodB() {
setTimeout( () => { console.log("doing some work B"); }, 250);
}

methodC() {
console.log("should be the last...");
}

预期输出(如果 some_condition 为 false):

做一些工作

应该是最后一个...

预期输出(如果 some_condition 为 true):

做一些工作

做一些工作B

应该是最后一个...

预期输出(如果 some_condition 为 true):

做一些工作B

做一些工作

应该是最后一个...

最佳答案

虽然我同意你的规范似乎可以最好地使用 promise 来完成,但我想我会使用 Observables 给你一个答案,看看这是否是你所要求的。

本质上,只需使用 merge 运算符,使 methodA()methodB() 返回 observables,然后调用 methodC( ) 当它们全部完成时:

var some_condition = true
function main() {
let test$ = a()
if (some_condition) test$ = test$.merge(b())
test$.subscribe(console.log, null, c)
}
function a() {
return Rx.Observable.timer(500)
.mapTo('doing some work A')
}
function b() {
return Rx.Observable.timer(250)
.mapTo('doing some work B')
}
function c() {
console.log('should be the last...')
}
main()

此日志:

doing some work B
doing some work A
should be the last...

关于javascript - 可观察等待方法完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45038940/

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