ES6中的Promise对象用来推迟一个异步计算。
用法:
var promise=new Promise(function(resolve,reject){...});
promise.then(function(...){...});
promise.catch(function(...){...});
例如:
(function(){
var promise=new Promise(function(resolve,reject){
setTimeout(function(){
console.log(1);
resolve();
},0);
});
setTimeout(function(){
promise.then(function(){
console.log(2);
});
},1000);
setTimeout(function(){
promise.then(function(){
console.log(3);
});
},2000);
}());
执行过程如下:
创建promise对象的时候,马上执行了console.log(1);
过了1秒,为promise添加了then处理器,马上触发console.log(2);
又过了1秒,再为promise添加一个then处理器,触发console.log(3);
结论:[同理适用于catch处理器]
(1)创建promise对象会导致参数函数立即执行
(2)如果promise对象的参数函数还没有调用resolve,则为promise添加的then处理器,会放到一个队列中
(3)如果promise对象的参数函数调用了resolve,则依次触发then队列中的处理器
(4)如果resolve已经调用了,再添加then处理器,还是会调用