事件循环(EventLoop)
Last updated
Last updated
setTimeout(function() {
console.log('setTimeout');
},0)
new Promise(function(resolve) {
console.log('promise');
resolve();
}).then(function() {
console.log('then');
return Promise.resolve('then2');
}).then(function(res){
console.log(res);
})
console.log('console');
// 输出顺序为:promise,console,then,then2,setTimeout// 这个列子里面,包含了宏任务,微任务,分别看看浏览器和node 打印的结果
console.log(1)
// 栈
setTimeout(()=>{
console.log('setTimeout1')
// 微任务
Promise.resolve(100).then(()=>{
console.log('promise')
})
})
// 栈
let promise = new Promise((resolve, reject)=>{
console.log(2)
resolve(4)
}).then((data)=>{
// 微任务
console.log(data)
})
// 栈
setTimeout(()=>{
console.log('setTimeout2')
})
console.log(3)
// 浏览器结果: 1,2,3,4,setTimeout1,promise,setTimeout2
// node 结果: 1,2,3,4,setTimeout1,setTimeout2,promiseprocess.nextTick(function(){
console.log('nextTick')
})
Promise.resolve().then(function(){
console.log('then')
})
// 结果打印:nextTick then