2

让我们看看下面的代码:

myObservable.subscribe({
  next: async () => {
    await something();
  },
  complete: () => {
    console.log('All async task are comlpeted');
  }
});

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

有什么办法吗?

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

4

1 回答 1

1

我要么 a) 坚持 observable 配方,并将 promise 转换为 observable,或者 b) 坚持 promise/async-await 模式,并将 observable 转换为 promise。坦率地说,我不知道如何成功地混合这两者。

基于 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);
于 2019-10-24T12:43:39.373 回答