开发者社区> 问答> 正文

JavaScript中,异步任务的运行机制是怎样的?

JavaScript中,异步任务的运行机制是怎样的?

展开
收起
甜甜的嘻嘻嘻 2022-07-28 14:08:26 317 0
1 条回答
写回答
取消 提交回答
  • 异步执行的运行机制如下。

    1.所有同步任务在 JavaScript 主线程上执行,形成一个执行栈。

    2.所有异步任务在任务队列中执行,异步任务包括鼠标单击事件、网络请求事件等(任务队列又分为宏任务和微任务:宏任务包括 script、setTimeout、setInterval、I/O、UI Rendering,微任务包括 process.nextTick、Promise、MutationObserver 等)。

    3.当执行栈中所有任务执行完毕时,系统会读取任务队列中的任务,并进入执行栈,由主线程开始执行。

    4.主线程不断重复上述过程。

    具体运行过程如下图所示。

    image.png

    当 JavaScript 主线程运行的时候,会产生堆(heap)和栈(stack)。栈中的代码会调用外部 API(WebAPI),它们会将所有异步任务(click 事件、load 事件、done事件等)加入任务队列(callback queue)中。当栈中的代码执行完毕时,主线程就会读取任务队列,并执行队列中异步任务对应事件的回调函数。主线程会不断从任务队列中读取事件,直至所有任务处理完成。如下图所示

    image.png

    以上内容摘自《智能前端技术与实践》电子书,点击https://developer.aliyun.com/topic/download?id=8550可下载完整版

    2022-07-28 14:13:32
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
阿里云开发者社区官方技术圈,用户产品功能发布、用户反馈收集等。
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载