RxjstoPromise()已弃用
我读过它toPromise()在 RxJS 7中已被弃用,并将在 RxJS 8 中删除。我经常将它与 angular 中的异步等待语法一起使用来处理 http 调用。它被认为是一种反模式吗?我理解流的概念,但 http 调用只发出一个值。对于一个简单的http调用,我没有得到可观察的点。接下来我应该用什么?我应该完全接受反应式编程吗?
回答
为什么会这样?
正如这里提到的,这些toPromise是被弃用的主要原因:
一个目标是将它从
Observable原型中移除,并将其变成一个独立的 util 函数。的命名
toPromise不是最好的。特别是与await它结合使用时读起来不太好:await categories$.toPromise()vsawait lastValueFrom(categories$)的类型信息
toPromise错误。当源Observable完成而没有发出单个值时 - 它用undefined. 在这种情况下它应该拒绝。APromise是一个“承诺”,当它解析一个值时,它就会在那里——而且就是它
undefined。但是当流完成而从未发出值时,您无法区分undefined故意发出的流和完成而不再发出的流
接下来应该用什么?
如果你真的坚持按照承诺的方式去做,lastValueFrom/ firstValueFrom。否则切换到反应式编程将是要走的路。
这个链接应该有帮助-
https://indepth.dev/posts/1287/rxjs-heads-up-topromise-is-being-deprecated