如何在完成 Rxjs Observable 之前等待在 subscribe 内部定义的异步方法?

让我们看下面的代码:


myObservable.subscribe({

  next: async () => {

    await something();

  },

  complete: () => {

    console.log('All async task are comlpeted');

  }

});

问题是console.log在最后一个next被触发后被调用,但我希望在最后一个something()完成后调用它。


有没有办法做到这一点?


我指定我myObservable自己使用new Obsercable(observer => ...). 所以可以修改。


潇潇雨雨
浏览 288回答 1
1回答

临摹微笑

我会 a) 坚持 observable 配方,并将承诺转换为 observable,或者 b) 坚持承诺/异步等待模式,并将 observable 转换为承诺。坦率地说,我不知道如何成功地混合这两者。基于 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);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript