JavaScript中的宏任务和微任务机制是什么


本文小编为大家详细介绍“JavaScript中的宏任务和微任务机制是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“JavaScript免费云主机域名中的宏任务和微任务机制是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。以上的代码控制台的输出结果是“ 2,1″;即先输出2再输出1;先执行的是打印”2“的内容,再执行定时器中1秒之后打印”1″的内容;将定时器中的时间改为0,即立即触发,代码控制台的输出结果仍然为”2, 1″;定时器的作用是间隔一段时间后,将函数放入到任务队列中,而 ”console.log(2)“则是直接在调用栈中执行,执行完毕了,消息队列中的定时器才会进入到调用栈中执行代码宏任务队列微任务队列栈与调用栈JS是单线程的,它的运行是基于时间循环机制(event loop)调用栈栈栈是一种数据结构,后进先出(l类比于弹夹中的子弹最后压进最先射出)调用栈中,放的是要执行的代码执行的代码在栈中从上到下依次执行(上面的是左后进去的,所以最先执行)消息队列(任务队列)队列 队列是一种数据结构,先进先出(类比于排队打饭,排前面的先打)队列中,放的是将要执行的代码当调用栈中的代码执行完毕后,队列中的代码按照顺序依次进入到调用栈中执行在JS中任务队列有两种宏任务队列大部分代码都去宏任务队列中排队微任务队列Promise的回调函数(then、catch、finally)在微任务队列中排队整个流程执行调用栈中的代码执行微任务中的所有任务执行宏任务中的所有任务上述代码的执行结果是”3 2 1“;打印”3”的语句是位于全局作用域中,一定是位于调用栈中的,所以最先执行,Promise的执行原理Promise在执行时,then就相当于给Promise了回调函数当promnise的状态从pending 变为 fulfilled时,then的回调函数会被放入任务队列中queueMicrotask() 用来向微任务队列中添加一个任务执行结果是“2 3 1”;首先“2”和“3″是放在微任务中的,”1“是放在宏任务中,先执行的应该是微任务中的,队列中遵循“先进先出”,“2″先进所以先出到调用栈中运行,然后是”3“,最后是宏任务中的”1″执行的结果是”3 1”;定时器的外层虽然是放在微任务的中,外层的Promise先执行,但由于内部有定时器随后进入了宏任务,所以下面的“3”处于微任务中就直接进入调用栈执行了,所以执行的结果为“31″读到这里,这篇“JavaScript中的宏任务和微任务机制是什么”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注百云主机行业资讯频道。

相关推荐: 前端和PHP的优缺点是什么

本篇内容主要讲解“前端和PHP的优缺点是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“前端和PHP的优缺点是什么”吧! 前端开发的优缺点前端开发使用的技术栈包括HTML、CSS和JavaScript。其中,HT…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 07/07 20:47
Next 07/07 20:47

相关推荐