简介:一、JavaScript是单线程单并发语言什么是单线程主程序只有一个线程,即同一时间片断内其只能执行单个任务。为什么选择单线程?JavaScript的主要用途是与用户互动,以及操作DOM。这决定了它只能是单线程,否则会带来 ...
一、JavaScript是单线程单并发语言
二、事件循环Event Loop 1、JavaScript 内存模型图 2、JavaScript 代码执行机制
3、事件循环(EventLoop) 三、异步任务 1.MacroTask(宏观Task) setTimeout, setInterval, setImmediate, requestAnimationFrame, I/O, UI rendering 2.MicroTask(微观任务) process.nextTick, Promise, Object.observe, MutationObserver 规范:
四、实例 ```javascript function ELoop() { // 当前任务 let p = new Promise((resolve, reject) => { console.log("current Task") resolve(); }); let nextP; setTimeout(() => { console.log("MacroTask_1"); nextP.then(() => { // 第一次执行时,这段代码并没有执行到。 console.log("MicroTask_promise_1"); //第一个MicroTask }) console.log("MacroTask_1 end") }, 0) // 第一个 MacroTask setTimeout(() => { console.log("MacroTask_2"); console.log("MacroTask_2 end") }, 0) // 第二个MacroTask nextP = p.then(() => { console.log("MicroTask_promise_2"); //第一个MicroTask }).then(() => { console.log("MicroTask_promise_3"); // 第二个MicroTask }) console.log("current Task end")}ELoop();/**输出结果:current Taskcurrent Task endMicroTask_promise_2MicroTask_promise_3MacroTask_1MacroTask_1 endMicroTask_promise_1MacroTask_2MacroTask_2 end**/ 本文仅代表作者个人观点,不代表巅云官方发声,对观点有疑义请先联系作者本人进行修改,若内容非法请联系平台管理员,邮箱qq2522407257。更多相关资讯,请到巅云www.yinxi.net学习互联网营销技术请到巅云学院www.yx10011.com。 |