ECMAScript 6 Promise对象.pdf

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ECMAScript 6 Promise对象

ECMAScript 6 Promise对象 1. Promise的含义 2. 基本⽤法 3. Promise .prototype .then() 4 . Promise .prototype .catch() 5. Promise .all() 6. Promise .race() 7 . Promise .resolve() 8. Promise .reject() 9. 两个有⽤的附加⽅法 10 . 应⽤ Promise 的含义 Promise是异步编程的⼀种解决⽅案,⽐传统的解决⽅案 回调函 和事件 更合 理和更强⼤。它由社区最早提出和实现,ES6将其写进了语⾔标准,统⼀了⽤法,原 ⽣提供了Promise对象。 所谓Promise,简单说就是⼀个容器,⾥⾯保存着某个未来才会结束的事件 (通常是 ⼀个异步操作)的结果。从语法上说,Promise是⼀个对象,从它可以获取异步操作的 消息。Promise提供统⼀的API ,各种异步操作都可以⽤同样的⽅法进⾏处理。 Promise对象有以下两个特点。 (1)对象的状态不受外界影响。Promise对象代表⼀个异步操作,有三种状 态:Pending (进⾏中)、Resolved (已完成,又称Fulfilled )和Rejected (已失 败)。只有异步操作的结果,可以决定当前是哪⼀种状态,任何其他操作都⽆法改变 这个状态。这也是Promise这个名字的由来,它的英语意思就是“承诺” ,表⽰其他⼿ 段⽆法改变。 (2 )⼀旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise对象的 状态改变,只有两种可能:从Pending变为Resolved和从Pending变 为Rejected。只要这两种情况发⽣,状态就凝固了,不会再变了,会⼀直保持这个 结果。就算改变已经发⽣了,你再对Promise对象添加回调函 ,也会⽴即得到这个 结果。这与事件 (Event )完全不同,事件的特点是,如果你错过了它,再去监听,是 得不到结果的。 有了Promise对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套 的回调函 。此外,Promise对象提供统⼀的接⼜,使得控制异步操作更加容易。 Promise也有⼀些缺点。⾸先,⽆法取消Promise,⼀旦新建它就会⽴即执⾏,⽆ 法中途取消。其次,如果不设置回调函 ,Promise内部抛出的错误,不会反应到外 部。第三,当处于Pending状态时,⽆法得知⽬前进展到哪⼀个阶段 (刚刚开始还是 即将完成)。 如果某些事件不断地反复发⽣,⼀般来说,使⽤stream模式是⽐部署Promise更好的 选择。 基本⽤法 ES6规定,Promise对象是⼀个构造函 ,⽤来⽣成Promise实例。 下⾯代码创造了⼀个Promise实例。 var promise = new Promise(function(resolve, reject) { // ... some code if (/* 异步操作成功 */){ resolve(value); else { reject(error); ); Promise构造函 接受⼀个函 作为参 ,该函 的两个参 分别是resolve和 reject。它们是两个函 ,由JavaScript引擎提供,不⽤⾃⼰部署。 resolve函 的作⽤是,将Promise对象的状态从“未完成”变为“成功” (即从Pending 变为Resolved ),在异步操作成功时调⽤,并将异步操作的结果,作为参 传递出 去;reject函 的作⽤是,将Promise对象的状态从“未完成”变为“失败” (即从 Pending变为Rejected ),在异步操作失败时调⽤,并将异步操作报出的错误,作为参 传递出去。 Promise实例⽣成以后,可以⽤then⽅法分别指定Resolved状态和Reject状态的回 调函 。 promise.then(function(value) { // success , function(error) { // failure ); then⽅法可以接受两个回调函 作为参 。第⼀个回调函 是Promis

文档评论(0)

hhuiws1482 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档