在完成 Rxjs Observable 之前,如何等待 subscribe 中定义的异步方法?
How to await an asynchonous method defined inside subscribe before to complete an Rxjs Observable?
让我们看看下面的代码:
myObservable.subscribe({
next: async () => {
await something();
},
complete: () => {
console.log('All async task are comlpeted');
}
});
问题是 console.log
在最后一个 next
被触发后被调用,但我希望它在最后一个 something()
完成后被调用。
有什么办法吗?
我指定我使用 new Obsercable(observer => ...)
自己实现了 myObservable
。所以可以修改。
我要么 a) 坚持 observable 方法,将 promises 转换为 observables,要么 b) 坚持 promise/async-await 模式,并将 observables 转换为 promises。坦率地说,我不知道如何成功地 mix 这两个。
基于 Rx 的解决方案:
import { from } from 'rxjs';
import { finalize } from 'rxjs/operators';
myObservable.pipe(
switchMap(() => from(something()),
finalize(() => console.log('All async task are comlpeted')),
).subscribe(someFunction);
让我们看看下面的代码:
myObservable.subscribe({
next: async () => {
await something();
},
complete: () => {
console.log('All async task are comlpeted');
}
});
问题是 console.log
在最后一个 next
被触发后被调用,但我希望它在最后一个 something()
完成后被调用。
有什么办法吗?
我指定我使用 new Obsercable(observer => ...)
自己实现了 myObservable
。所以可以修改。
我要么 a) 坚持 observable 方法,将 promises 转换为 observables,要么 b) 坚持 promise/async-await 模式,并将 observables 转换为 promises。坦率地说,我不知道如何成功地 mix 这两个。
基于 Rx 的解决方案:
import { from } from 'rxjs';
import { finalize } from 'rxjs/operators';
myObservable.pipe(
switchMap(() => from(something()),
finalize(() => console.log('All async task are comlpeted')),
).subscribe(someFunction);