类别:js / 日期:2023-03-29 / 浏览:246 / 评论: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
版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。
发表评论 / 取消回复