什么是JS宏任务和微任务? 优先级是什么?

小夏 职场 更新 2024-02-16

在 j**ascript 中,macro-task 和 micro-task 指的是两种类型的异步操作。

宏任务通常包括以下操作:

SetTimeout 和 SetInterval TimersFunction EventsFunctions(例如,鼠标单击、键盘输入等)AJAX 请求的函数AnimationFramesFunction 脚本标记OnLoad 和 OnError 事件当宏任务开始执行时,j**Ascript 引擎将其放在调用堆栈的底部,然后转到其他任务。当调用堆栈为空时,j**ascript 引擎将执行下一个宏任务并执行它。

微任务通常包括以下操作:

Promise 的功能:生成器、突变观察器和过程nexttick(node.JS)当微任务添加到任务队列时,它会在当前宏任务执行后立即执行,而不是等待下一个宏任务开始执行。这允许微任务在执行当前宏任务期间处理异步操作的结果,从而提高应用程序的响应能力。

在 j**ascript 中,宏任务和微任务具有不同的执行优先级。 通常,微任务优先于宏任务,也就是说,在宏任务中,如果存在微任务,那么微任务将优先于宏任务执行。

具体来说,当一个宏任务开始执行时,如果在执行过程中产生了微任务,这些微任务会被添加到微任务队列中,等待执行完成后立即执行当前的宏任务。 如果在进程中生成了新的微任务,则执行该微任务,直到微任务队列为空,然后 j**ascript 引擎将转到下一个宏任务。

例如,下面演示了宏任务和微任务的执行顺序:

console.log('start');settimeout(function() 0);promise.resolve().then(function() console.log('end');
在上面,首先执行同步log('start') 和控制台log('end')。接下来,使用 settimeout 添加宏任务,然后使用 promiseresolve().然后添加一个微任务。 由于微任务优先于宏任务,因此 promise 的函数在 settimeout 函数之前执行。 因此,上述**的输出顺序如下:

startendpromisesettimeout

相似文章

    如何与导师沟通任务

    这个任务主要是指一些临时任务。例如,要求你研究一个方向,制作一个PPT等。如果你是无脑的,突然被要求去做,那将算作一项任务。对于这样的任务,更需要沟通。沟通越少,返工越多,责骂越多。关于作者 朱涛安德烈,in微博,等平台分享读研心得,服务w 以上人,为研究生提供读研技巧 生涯规划 灵马等多种服务。以...

    学校教育的任务与改革

    教育是培养人才的重要途径,学校作为教育的主要场所,承担着传授知识 培养能力 塑造品格等重要任务。然而,在当前的学校教育中,有一些任务与教育的本质无关,不仅浪费了学生和教师的时间和精力,而且影响了教育的质量和效果。因此,有必要改革学校教育,消除那些与教育无关的任务,使学校教育更加纯粹和有效。在学校教育...

    教师平衡教学任务与自我提升的时间分配策略

    粉丝奖励计划 在学校里,教师的作用不仅是传授知识,更是引导学生去探索 去发现 去创新。然而,随着教学任务的增加,教师往往面临着如何平衡教学任务和自我提升之间的时间分配的问题。这是一个需要考虑的问题,因为它关系到教师的教学质量和个人发展。以下是我对这个问题的一些看法和计划。首先,我认为教师应该把自我提...

    深入分析军队和武警部队的职能、任务和组织结构

    在中国,军队的可以简单地分为军队和武警。其中,陆军主要包括陆军 海军 空军和第二炮兵,武警部队包括国内安全部队和 森林 水电 运输部队。虽然都是国家武装力量,但军队和武警在职能 任务和组织结构上存在明显差异。首先,从职能上看,陆军是中队的主要兵种之一,其主要职能是进行陆上作战,保卫国家领土完整,军队...

    《逃离塔科夫》是一种新的玩法,具有任务联动解密和高奖励

    Escape from Tarkov 中的任务系统是相当复杂的,任务之间紧密相连,是你在游戏中前进的脚手架。当你完成滑雪者的任务链时,你最终会到达一系列名为 化学 的任务,这些任务由四个部分组成。当你到达化学 第 部分时,你还将获得治疗师和普拉波尔的单独任务。该任务被称为 出于好奇心 它要求您与滑雪...