首页 > 解决方案 > lastValueFrom 而不是 toPromise() 为什么?

问题描述

我看到 rxjs 将弃用 toPromise()。我们应该使用 lastValueFrom 代替。我想问这背后的原因是什么?

语法 .toPromise() 更加干净。

标签: typescriptrxjs

解决方案


Ben Lesh 关于 rxjs7 的几次公开演讲已经涵盖了这个主题。总而言之,.toPromise()从未真正正常运行。这是因为响应要么是解析的值,要么是 undefined <T | undefined>,这不是 Promise 的工作方式。但是,.lastValueFrom()将返回一个类型的承诺,<T>或者如果没有发出任何值,它将抛出一个空错误。额外的好处是.lastValueFrom()可配置的,如果 observable 不发出任何内容,您可以分配默认值。


推荐阅读