//Promise延时顺序执行

var waitOne = new Promise(function(resolve, reject) {
     setTimeout(function(){ resolve(1)}, 1000);
}); 
var waitSecond = new Promise(function(resolve, reject) {
     setTimeout(function(){ resolve(1)}, 1000);
}); 
waitOne.then(function() {
    console.log("Hello"); // 1秒后输出"Hello"
    return new Promise(function(resolve, reject) {
     setTimeout(function(){ resolve(1)}, 1000);
    });
}).then(function() {
    console.log("Hi"); // 2秒后输出"Hi"
});

 

new Promise(function(resolve , reject) {
    resolve(1);
}).then(function(val) {
    console.log(val);
    return new Promise(function(resolve , reject) {
        resolve(2);
    });
}).then(function(val) {
    console.log(val);
    return new Promise(function(resolve , reject) {
        resolve(3);
    });
}).then(function(val) {
    console.log(val);
    return new Promise(function(resolve , reject) {
        resolve(4);
    });
}).then(function(val) {
    console.log(val);
});

//输出:
//      1
//      2
//      3
//      4

 

下面代码中,setTimeout(fn, 0)在下一轮“事件循环”开始时执行,Promise.resolve()在本轮“事件循环”结束时执行,console.log('one')则是立即执行,因此最先输出。 
setTimeout(function () {
  console.log('three');
}, 0);

Promise.resolve().then(function () {
  console.log('two');
});

console.log('one');

 

posted on 2019-11-26 15:49  十行道人  阅读(399)  评论(0编辑  收藏  举报