[JavaScript] Promise

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处理器,还是会调用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容