RxjstoPromise()已弃用

我读过它toPromise()在 RxJS 7中已被弃用,并将在 RxJS 8 中删除。我经常将它与 angular 中的异步等待语法一起使用来处理 http 调用。它被认为是一种反模式吗?我理解流的概念,但 http 调用只发出一个值。对于一个简单的http调用,我没有得到可观察的点。接下来我应该用什么?我应该完全接受反应式编程吗?

回答

为什么会这样?

正如这里提到的,这些toPromise是被弃用的主要原因:

  1. 一个目标是将它从Observable原型中移除,并将其变成一个独立的 util 函数。

  2. 的命名toPromise不是最好的。特别是与await它结合使用时读起来不太好:await categories$.toPromise()vsawait lastValueFrom(categories$)

  3. 的类型信息toPromise错误。当源Observable完成而没有发出单个值时 - 它用undefined. 在这种情况下它应该拒绝。APromise是一个“承诺”,当它解析一个值时,它就会在那里——而且就是它
    undefined。但是当流完成而从未发出值时,您无法区分undefined故意发出的流和完成而不再发出的流

接下来应该用什么?

如果你真的坚持按照承诺的方式去做,lastValueFrom/ firstValueFrom。否则切换到反应式编程将是要走的路。

这个链接应该有帮助-

https://indepth.dev/posts/1287/rxjs-heads-up-topromise-is-being-deprecated


以上是RxjstoPromise()已弃用的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>