vue的nexttick中代码为什么要尽量在当前循环的微任务执行,兼容性不支持时在下一轮循环的宏任务执行,有什么不好影响
vue的nexttick中代码为什么要尽量在当前循环的微任务执行,兼容性不支持时在下一轮循环的宏任务执行,有什么不好影响
还有一点可能是当前任务执行时修改了页面内某个节点信息,再下一次宏任务之前会先执行一次GUI渲染,页面内容变化了一次,下一次宏任务也修改了这个节点信息,那么也会再变化一次,所以用户视觉上会出现闪烁
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答5.2k 阅读✓ 已解决
2 回答4.8k 阅读✓ 已解决
4 回答4.4k 阅读✓ 已解决
因为宏任务有可能延时太长了。导致界面上的显示并不是你想要的。
举个例子。你执行了一堆计算,nextTick 里面汇总结果。
如果是微任务,那么他会在同一个周期完成渲染
如果是宏任务,会在下一个周期完成渲染。这个时候有可能因为主进程被占用,比如说移动端某些 webview 被客户端卡住了。也有可能被某些 ajax 的回调呀之类的任务卡住。