promise异步函数
2017-12-04 本文已影响7人
不叫ShaoYu的老王同学
promise的含义
Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象。
promise的三个状态
pending(进行中),fulfilled(成功),rejected(失败)
promise的两个特点:
1.对象的状态不受外界因素影响。只有异步操作的结果才能改变但前状态(pending->fulfilled或pending->rejected)
2.函数只执行一遍即一旦改变状态,就不在变了,在任何时候都能得到这个结果。(有点像全局作用域似的)
有了Promise对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。此外,Promise对象提供统一的接口,使得控制异步操作更加容易。
promise的缺点
Promise也有一些缺点。首先,无法取消Promise,一旦新建它就会立即执行,无法中途取消。其次,如果不设置回调函数,Promise内部抛出的错误,不会反应到外部。第三,当处于pending状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)。
如果某些事件不断地反复发生,一般来说,使用Stream模式(流模式)是比部署Promise更好的选择。
ES6 规定,Promise对象是一个构造函数,用来生成Promise实例。具体参见(http://es6.ruanyifeng.com/#docs/promise)