类别:js / 日期:2023-03-29 / 浏览:693 / 评论:0
其中一个主要的区别在于浏览器的 event loop 和 nodejs 的 event loop 在处理异步事件的顺序是不同的,nodejs 中有 micro event;其中 Promise 属于 micro event该异步事件的处理顺序就和浏览器不同.nodejs V11.0 以上 这两者之间的顺序就相同了.
function test() {
console.log("start");
setTimeout(() => {
console.log("children2");
Promise.resolve().then(() => {
console.log("children2-1");
});
}, 0);
setTimeout(() => {
console.log("children3");
Promise.resolve().then(() => {
console.log("children3-1");
});
}, 0);
Promise.resolve().then(() => {
console.log("children1");
});
console.log("end");
}
test();
// 以上代码在 node11 以下版本的执行结果(先执行所有的宏任务,再执行微任务)
// start
// end
// children1
// children2
// children3
// children2-1
// children3-1
// 以上代码在 node11 及浏览器的执行结果(顺序执行宏任务和微任务)
// start
// end
// children1
// children2
// children2-1
// children3
// children3-1
版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。


发表评论 / 取消回复