当前位置:首页 > 编程笔记 > 正文
已解决

使用 queueMicrotask 创建微任务!

来自网友在路上 158858提问 提问时间:2023-09-27 01:18:34阅读次数: 58

最佳答案 问答题库588位专家为你答疑解惑

之前我们想尽一切办法来创建一个自定义的微任务,如 Promise.thenMutationObserver(浏览器环境中的 API,用于监视 DOM 变动)、async/awaitprocess.nextTick(仅Node.js支持,本质来说它不是事件循环的一部分)。

在偶然的情况下,我发现浏览器竟然具有专门产生微任务的方法!

2023-09-23-13-48-54

它就是原生的 queueMicrotask 方法,该方法存在于 window 对象中,并且目前兼容性还不错:

2023-09-23-13-50-31

queueMicrotask 用法很简单,传入一个想要被包装成微任务的函数即可,看下面的例子:

console.log('1');
queueMicrotask(() => {console.log('2');Promise.resolve().then(() => {console.log('3');});setTimeout(() => {console.log('4');queueMicrotask(() => {console.log('5');});});
});
setTimeout(() => {Promise.resolve().then(() => {console.log('6');});console.log('7');queueMicrotask(() => {console.log('8');});
});
console.log('9');

打印结果: 1 9 2 3 7 6 8 4 5

相对来说,queueMicrotask 是产生微任务最方便的方法了,希望还没实现的浏览器厂商抓紧时间跟进!

网上搜了一下,发现早在18年 queueMicrotask 提案就得到了通过,19年就有哥们介绍了该 API,我竟然现在才知道,实属汗颜。

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"使用 queueMicrotask 创建微任务!":http://eshow365.cn/6-14294-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!