在完成 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);