理解es6中promise链式调用
promise状态,value不谈了,主要研究链式调用(then)
constructor
立即执行,参数resolve,reject决定promise对象状态和value
//原生promise示例
let p = new Promise((resolve,reject) => {
resolve(1)
})
then
总体特性:
- 返回一个promise对象,所以可以链式调用
- 如果 return new Promise() 返回一个promise对象,则要等该promise对象最终成功或失败才改变返回的promise状态
- 如果return '非promise对象‘ 则直接返回成功态的一个promise
调用then时发生了什么:
立即返回一个promise(pending),then中return 的值决定新返回的promise的状态:
非promise:成功
promise:状态与该promise一致
抛出异常:失败
事件执行顺序:如果状态为pending的promise调用then,则在promise的注册列表中加入事件等待执行,否则(成功或失败状态)直接执行事件(这里的事件做了什么:将then的方法参数塞入微任务队列)
//原生promise示例
let p = new Promise((resolve,reject) => {
resolve(1)
}).then(function (