vue的nexttick中代码为什么要尽量在当前循环的微任务执行,兼容性不支持时在下一轮循环的宏任务执行,有什么不好影响

vue的nexttick中代码为什么要尽量在当前循环的微任务执行,兼容性不支持时在下一轮循环的宏任务执行,有什么不好影响

阅读 2.1k
3 个回答

因为宏任务有可能延时太长了。导致界面上的显示并不是你想要的。

举个例子。你执行了一堆计算,nextTick 里面汇总结果。

如果是微任务,那么他会在同一个周期完成渲染

如果是宏任务,会在下一个周期完成渲染。这个时候有可能因为主进程被占用,比如说移动端某些 webview 被客户端卡住了。也有可能被某些 ajax 的回调呀之类的任务卡住。

因为微任务执行完成才会执行下一轮的宏任务,兼容性不支持时,那执行顺序就有可能落后于其他宏任务,这会造成顺序上的错误,如果代码对执行顺序有要求会发生意想不到的错误

还有一点可能是当前任务执行时修改了页面内某个节点信息,再下一次宏任务之前会先执行一次GUI渲染,页面内容变化了一次,下一次宏任务也修改了这个节点信息,那么也会再变化一次,所以用户视觉上会出现闪烁

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题