当前位置: 首页 > news >正文

淘宝网站开发实训报告珠海手机网站制作

淘宝网站开发实训报告,珠海手机网站制作,wordpress新添接口,成都百度推广背景 Rxjs从V7开始废弃了toPromise, V8中会删除它。 原因 1#xff1a;toPromise()只返回一个值 toPromise()将 Observable 序列转换为符合 ES2015 标准的 Promise 。它使用 Observable 序列的最后一个值。 例#xff1a; import { Observable } from rxjs; ……… 背景 Rxjs从V7开始废弃了toPromise, V8中会删除它。 原因 1toPromise()只返回一个值 toPromise()将 Observable 序列转换为符合 ES2015 标准的 Promise 。它使用 Observable 序列的最后一个值。 例 import { Observable } from rxjs; …… myObservable new Observablestring((observer) {observer.next(Hello);observer.next(World);observer.complete(); });获取并打印结果toPromise()后只获取了最后一个结果World this.myObservable.toPromise().then((value: string) {console.log(toPromise: ${value}); });2Observable 可能不产生值或产生多个值 Observable 和 Promise 之间的相似之处在于两者都可能随着时间的推移产生值但不同之处在于Observable 可能不产生值或产生多个值而 Promise在成功解析时仅产生一个值。 例增加代码如下 this.myObservable.subscribe((value: string) {console.log(observable: ${value}); });Observable产生两个值 如果我们注释掉下面代码Observable不产生值但Promise产生一个undefined值 myObservable new Observablestring((observer) {// observer.next(Hello);// observer.next(World);observer.complete(); });因此在V7 中Observable 的 toPromise() 方法的返回类型已修复以更好地反映 Observable 可以产生零值的事实。对于某些项目来说这可能是一个重大变化因为返回类型已从 PromiseT 更改为 PromiseT | undefined。 3toPromise() 方法名不明确 toPromise() 方法名称从未指示 Promise 将解析为发出的哪个值因为 Observable 可以随时间产生多个值。转换为 Promise 时您可能希望选择要选择哪个值 - 第一个到达的值或最后一个值。为了解决所有这些问题rxjs决定弃用 toPromise() 解决方案 作为已弃用的 toPromise() 方法的替代您应该使用两个内置静态转换函数 firstValueFrom 或 lastValueFrom。 1lastValueFrom lastValueFrom 几乎与 toPromise() 完全相同这意味着它将在 Observable 完成时解析为到达的最后一个值。 例增加代码 const lastValue await lastValueFrom(this.myObservable); console.log(lastValueFrom: ${lastValue});但当 Observable 完成而未发出值时行为有所不同。当 Observable 完成而未发出时toPromise() 将成功解析为 undefined因此返回类型会发生变化而 lastValueFrom 将拒绝并返回 EmptyError。因此lastValueFrom 的返回类型是 PromiseT就像 RxJS 6 中的 toPromise() 一样。 例 myObservable new Observablestring((observer) {// observer.next(Hello);// observer.next(World);observer.complete(); }); this.myObservable.toPromise().then((value: string | undefined) {console.log(toPromise: ${value}); }); const lastValue await lastValueFrom(this.myObservable); console.log(lastValueFrom: ${lastValue});2firstValueFrom 但是您可能希望在第一个值到达时立即获取它而不等待 Observable 完成因此您可以使用 firstValueFrom。firstValueFrom 将使用 Observable 发出的第一个值解析 Promise并立即取消订阅以保留资源。 例增加代码 const firstValue await firstValueFrom(this.myObservable); console.log(firstValueFrom: ${ firstValue});如果 Observable 完成且未发出任何值firstValueFrom 也会拒绝并出现 EmptyError。 例 myObservable new Observablestring((observer) {// observer.next(Hello);// observer.next(World);observer.complete(); }); this.myObservable.toPromise().then((value: string | undefined) {console.log(toPromise: ${value}); }); const firstValue await firstValueFrom(this.myObservable); console.log(firstValueFrom: ${ firstValue});默认值 无论是哪种替代方案我们都可以设置默认值以防止EmptyError发生。 例 const firstValue await firstValueFrom(this.myObservable, { defaultValue: }); console.log(firstValueFrom: ${ firstValue}); const lastValue await lastValueFrom(this.myObservable, { defaultValue: }); console.log(lastValueFrom: ${lastValue});最后 仅当您知道 Observable 最终会完成时才使用 lastValueFrom 函数。如果您知道 Observable 将发出至少一个值或最终会完成则应使用 firstValueFrom 函数。 如果源 Observable 未完成或未发出您最终会得到一个挂起的 Promise并且异步函数的所有状态都可能挂在内存中。 为了避免这种情况请考虑添加 timeout、take、takeWhile 或 takeUntil 等。
http://www.w-s-a.com/news/507177/

相关文章:

  • 网站链接数怎么做wordpress安装网址
  • 沈阳建网站 哪家好如何做旅游网站推销
  • 继续网站建设南通网站建设方法
  • 淮南公司网站建设如果做京东优惠卷的网站
  • 二手房网站平台怎么做项目工程监理公司网站建设方案
  • 秦皇岛做网站公司小说推广平台有哪些
  • php网站做分享到朋友圈天元建设集团有限公司信用代码
  • 邱县做网站在线免费图片编辑器
  • 网站备份网站做网站如何把支付宝微信吧
  • 做网站的怎么获取客户信息晋城建设局网站
  • 新开传奇网站发布网单职业wordpress建站网页无法运作
  • 海南省住房和城乡建设厅官方网站网站开发有哪些语言
  • 网站开发排期表免费网站建设策划
  • 飞沐网站设计江苏建设人才网证书查询
  • 网站优化的意义怎么帮商家推广赚钱
  • 安顺公司做网站福州建设发展集团有限公司网站
  • 普陀企业网站建设做散客机票的网站如何推广
  • 河北网站建设与制作建设宁波市分行的互联网网站
  • python做网站是不是特别慢百度推广基木鱼
  • 卖网站链接东营住房和城乡建设信息网
  • 网站后台如何上传ico图标单位建设网站需要的材料
  • 如何建淘客网站郑州做网站最好的公司
  • 连锁酒店网站方案o2o网站建设方案
  • 功能型网站响应式网站原理
  • 聊城建设网站骨干校 建设网站
  • 网站建设与管理是干嘛的中国新闻社是什么单位
  • 帮别人做视频剪辑的网站传业做微采商城网站
  • 设计一个网站开发方案宣传片制作企业
  • 新网站收录多少关键词免费一键网站
  • 网页制作与网站建设 在线作业手表网站制作照片