如何在一个返回值是Observable的函数上使用async-await?

interface HttpInterceptor {
  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
        //可以用await吗?
    }
}

截屏2020-03-23下午4.05.36.png
我就想要同步执行,不然用.then()的方式最后会因为返回值不一致而报错

阅读 4.5k
3 个回答

用rxjs操作符fromPromise
比如这样

return fromPromise(你的Promise).pipe(switchMap(value=>{
//你的逻辑
return next.handle(req);
}))

Angular?

这是 Reactive 的写法,而 async/await 是针对 Promise 的语法糖,那么你需要的就是把 Reactive 中的 Observable<T> 先转化为 Promise<T>

在 RxJS 中,你可以直接将一个 Observable 对象 .toPromise(),就可以得到其对应的 Promise 对象。

REF: https://www.learnrxjs.io/lear...

P.S. 其实不推荐这么做,因为 Reactive 也好、Promise 也罢,是针对异步编程的两种不同的思路,即然用了前者,就不要老想着往后者上转。

用toPromise

await xxx.intercept(...).toPromise();

就可以

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进