让我们看下面的代码:myObservable.subscribe({ next: async () => { await something(); }, complete: () => { console.log('All async task are comlpeted'); }});问题是console.log在最后一个next被触发后被调用,但我希望在最后一个something()完成后调用它。有没有办法做到这一点?我指定我myObservable自己使用new Obsercable(observer => ...). 所以可以修改。
1 回答
![?](http://img1.sycdn.imooc.com/5458477300014deb02200220-100-100.jpg)
临摹微笑
TA贡献1982条经验 获得超2个赞
我会 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);
添加回答
举报
0/150
提交
取消