写在前面从一个最简单的示例说起:console.log('scriptstart');setTimeout(function(){console.log('setTimeout');},0);Promise.resolve().then(function(){console.log('promise1');}).then(function(){console.log('promise2');});
原创 2021-01-14 19:33:58
216阅读
写这篇文章的原因有两个:其一,团队小伙伴之前分享过《macrotask microtask介绍》这个话题,当时留下了一些疑问,至今仍模棱两可;其二,看到了「奇舞周刊」转发了一篇《从 薛定谔的猫 聊到 Event loop》的文章,内容精炼,但是有一些原则性的问题和规范有偏
总结: 因为如果使用macrotask, vue的batch (一个一个执行nextTick内部维护数组中的函数) 的这个
原创 2022-05-29 00:39:57
555阅读
js中的宏任务和微任务宏任务(macrotask )和微任务(microtask )macrotask 和 microtask 表示异步任务的两种分类。在挂起任务时,JS 引擎会将所有任务按照类别分到这两个队列中,首先在 macrotask 的队列(这个队列也被叫做 task queue)中取出第一个任务,执行完毕后取出 microtask 队列中的所有任务顺序执行;之后再取 macrotask
转载 2021-05-20 08:31:00
232阅读
2评论
Event Loop 在 JavaScript 中,任务被分为两种,一种宏任务(MacroTask),一种叫微任务(MicroTask)。 MacroTask(宏任务) script全部代码、setTimeout、setInterval、I/O、UI Rendering。 MicroTask(微任务 ...
转载 2021-10-09 09:19:00
146阅读
2评论
原文: https://blog.csdn.net/sjn0503/article/details/76087631 简单来讲,整体的js代码这个macrotask先执行,同步代码执行完后有microtask执行microtask,没有microtask执行下一个macrotask,如此往复循环至结
转载 2018-05-28 09:51:00
187阅读
2评论
 promise.then VS setTimeout  在chrome和node环境环境中均输出2, 3, 1, 先输出2没什么好说的,3和1顺序让人有些意外 原因: 有一个事件循环,但是任务队列可以有多个。 整个script代码,放在了macrotask queue中,setTimeout也放入macrotask queue。 但是,promise.the
Javascript 之 Event Loop1^在JavaScript中,任务被分为两种,一种宏任务(MacroTask
转载 2022-12-15 21:43:20
67阅读
1 宏任务 常见的有setTimeout ,setInterval等2 微任务 常见的有Promise, process.nextTick等执行过程:js执行时,首先从macrotask queue中取出第一个宏任务,执行完毕后,从microtask中取出所有微任务执行,接住再从macrotask中取出一个宏任务执行。script//宏任务setTimeout(()=>{console.lo
js
原创 2023-07-27 16:02:49
60阅读
(js中的MacroTask) 1. Rendering never happens while the engine executes a task. Doesn’t matter if the task takes a long time. Changes to DOM are painted
原创 2021-09-01 16:13:28
678阅读
一、异步编程核心概念1.1 事件循环机制任务队列(Task Queue) ├── 宏任务队列(MacroTask Queue) │ ├── setTimeout │ ├── setInterval │ ├── I/O操作 │ └── UI渲染 │ └── 微任务队列(MicroTask Queue) ├── Promise.then/catch/finally ├─
原创 3月前
68阅读
Event Loop1^ eventloop在JavaScript中,任务被分为两种,一种宏任务(MacroTask)也叫Task,一种叫微任务(M果是false,表示在冒泡阶段调用...
转载 2022-12-15 21:41:28
112阅读
javascript从诞生之日起就是一门 单线程的 非阻塞的 脚本语言,单线程意味着,javascript代码在执行的任何时候,都只有一个主线程来处理所有的任务,非阻塞靠的就是 event loop(事件循环),本文就讲解下事件循环。event loop它最主要是分三部分:主线程、宏队列(macrotask)、微队列(microtask)js的任务队列分为同步任务和异步任务,所有的同步任务都是在主线程里执行的,异步任务可能会在macrotask或者microtask里面宏队列(macrot...
原创 2021-11-29 16:31:25
138阅读
事件循环 三个概念 调用栈,先进后出 宏任务队列(存放宏任务的,队列先进先出) 微任务队列 异步任务又分为宏任务和微任务 宏任务,macrotask,也叫tasks setTimeout setInterval setImmediate (Node独有) requestAnimationFrame
转载 2020-10-20 16:51:00
148阅读
2评论
宏任务是由宿主(浏览器、Node)发起的,而微任务由 JS 自身发起。宏任务(Macrotask)大概如下:setTimeout  setInterval MessageChannel I/O setImmediate(Node环境)    script(整体代码块) 微任务(Microtask)大概如下:MutationObserver(浏览器环
宏任务和微任务一、宏队列,macrotask,也叫tasks。 一些异步任务的回调会依次进入macro task queue,等待后续被调用setTimeoutsetIntervalsetImmediate (Node独有)requestAnimationFrame (浏览器独有)I/OUI rendering (浏览器独有)二、微队列,microtask,也叫jobs。 另一些异步任务的回调会依
1.js的执行顺序,先同步后异步2.异步中任务队列的执行顺序: 先微任务microtask队列,再宏任务macrotask队列3.调用Promise 中的resolve,reject属于微任务队列,setTimeout属于宏任务队列注意以上都是 队列,先进先出。 微任务包括 `process.nextTick` ,`promise` ,`MutationObserver`。宏任务包括 `
转载 2024-02-04 15:53:53
443阅读
1点赞
在ES6和ES5中promise的执行也有不同点(上述提到,ES6中promise属microtask;在ES5中,暂未接触到有api直接操作microtask的,所以.then的异步是用setTimeout代替,属macrotask,导致输出有差异);关于promise也可参考上文 分步理解 Pr
转载 2018-12-29 15:33:00
532阅读
2评论
宿主(浏览器)发起的任务我们可以称之为宏观任务(macrotask);引擎(js)自己也可以发起任务,这个任务就叫做微观任务(microtask)。 一、js宏任务和微任务分别有哪些?1、js宏任务有:<script>整体代码、setTimeout、setInterval、setImmediate、Ajax、DOM事件。2、js微任务有:process.nextTick、Mu
零.回首数数51篇博客,又一年过去了。学习收获函数式编程:Haskellx13React:Reactx11NodeJS:Nodex2Electronx2定制IDEx4规范:CSSx6ESModulex1W3C规范流程x1HTTP缓存x1macrotask与microtaskx1新概念:PWAx1WebAssemblyx1WebComponentsx1工具:Webpackx1rollupx1lern
原创 2021-01-14 22:12:05
150阅读
  • 1
  • 2