如何解决将可观察到的东西转化为承诺的任何弊端
有时需要订阅组件,而不是使用异步管道。
在这些情况下,可观察对象只会发出一个值,转换为承诺是否有任何原因或不利之处?由于我们不进行订阅,所以如果有人不取消订阅,这样做会不会比发生内存泄漏更安全?
解决方法
我知道的缺点是toPromise()
在rxjs 7中将是deprecated,在rxjs 8中将被删除。如果您现在大量使用它,以后将需要额外的工作才能迁移。如果您希望代码在6.x中具有未来的证明,现在就实现lastValueFrom和firstValueFrom并使用它们,那么以后可以很容易地更改rxjs7中提供的实现并删除这两个方法。有关用法,请参见链接的文章。
import { Observable } from 'rxjs';
import { first } from 'rxjs/operators';
export function lastValueFrom<T>(obs$: Observable<T>): Promise<T> {
return obs$.toPromise();
}
export function firstValueFrom<T>(obs$: Observable<T>): Promise<T> {
return obs$.pipe(first()).toPromise();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。