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

发布于 2022-09-12 01:47:24 字数 322 浏览 18 评论 0

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

朱染 2022-09-19 01:47:24

用rxjs操作符fromPromise
比如这样

return fromPromise(你的Promise).pipe(switchMap(value=>{
//你的逻辑
return next.handle(req);
}))
心碎无痕… 2022-09-19 01:47:24

Angular?

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

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

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


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

信仰 2022-09-19 01:47:24

用toPromise

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

就可以

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文