promise和nextTick的执行顺序
时间: 2023-08-15 17:12:31 浏览: 150
引用\[1\]:nextTick 是直接告诉引擎,在 nextTick 中的回调需要尽快执行,而非放入队列。nextTick 其实也是使用 Promise 来处理回调,但是会将 nextTick 中的回调全部塞到 Promise.then 的回调之前,而同级微任务的情况下,是按顺序来进行执行的,这就让 nextTick 永远都在 Promise.then 之前执行。\[1\]引用\[4\]:首先执行所有同步代码开启第一个 tick 周期的事件循环在每个循环开始之前,执行 nextTick 中的回调执行微任务队列中的回调执行宏任务队列中的回调结束一个循环在一个周期结束之后,新周期开始之前,执行第3步的 nextTick,继续循环。\[4\]
根据上述引用内容,promise和nextTick的执行顺序如下:
1. 首先执行所有同步代码。
2. 开启第一个 tick 周期的事件循环,在每个循环开始之前,执行 nextTick 中的回调。
3. 执行微任务队列中的回调,包括 Promise.then 中的回调。
4. 执行宏任务队列中的回调,包括 setTimeout 中的回调。
5. 结束一个循环,在一个周期结束之后,新周期开始之前,执行 nextTick 中的回调,继续循环。
所以,nextTick的回调会在Promise.then的回调之前执行。
#### 引用[.reference_title]
- *1* *2* *3* *4* [【JavaScript】用了这么久的Vue,你还不知道Promise、nextTick、setTimeout的执行顺序?(涉及EventLoop,...](https://blog.csdn.net/weixin_42678675/article/details/117668019)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *5* [Promise setTimeout NextTick执行顺序](https://blog.csdn.net/qq_28719103/article/details/121698828)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文