351120
一个关于promise与setTimeout的程序
程序如下
var p = new Promise(function(resolve,reject){
resolve()
})
p.then(function(value){
console.log('promise_1')
}).then(function(value){
console.log('promise_2')
})
setTimeout(() => {
console.log("timeout_1");
p.then(function(value){
console.log('promise_3')
}).then(function(value){
console.log('promise_4')
})
}, 0);
setTimeout(() => {
console.log("timeout_2");
setTimeout(() => {
console.log('timeout_3')
}, 0);
p.then(function(value){
console.log('promise_5')
})
}, 0);
console.log('start');
for(let i=0;i<1000000000;i++){}
最终得到的结果是 start promise_1 promise_2 timeout_1 timeout_2 promise_3 promise_5 promise_4 timeout_3
所以是 在node中是先把promise的任务队列执行完后 在执行定时器观察者的任务队列
promise_4应该先加入到任务队列才对呀 可是为什么promise_5又在promise_4前执行