【发布时间】:2021-12-01 09:13:59
【问题描述】:
我有下一个例子
import { Subject } from "rxjs";
const subject = new Subject();
subject.subscribe(() => new Promise(res => {
setTimeout(() => console.log('!! 1'), 500);
}))
subject.subscribe(() => new Promise(res => {
setTimeout(() => console.log('!! 2'), 1000);
}))
console.log('>>> START')
subject.next();
console.log('<<< FINISH')
控制台看起来像
>>> START
<<< FINISH
!! 1
!! 2
我想要以下行为
>>> START
!! 1
!! 2
<<< FINISH
我可以达到预期的行为还是应该使用其他方法?
【问题讨论】:
-
你可以使用
toPromise()方法,但是只有subscribe方法中的回调函数会被执行,因为它是asynchronous,它会被放入队列中并且不会被立即执行 -
使用
.next()时,您无法控制这将触发哪些异步事件,因此您无法等待它。在这里很难给出任何建议,您必须完全重构此示例以使其达到您的预期。 -
也许通过使用计划方法?它可以提供类似的功能吗?