上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖

vue的nextTick和setInterval那点事

[复制链接]
  • TA的每日心情
    开心
    前天 00:00
  • 签到天数: 53 天

    [LV.5]常住居民I

    352

    主题

    3091

    帖子

    3100

    积分

    管理员

    非物质文化遗产社会摇传承人

    Rank: 10Rank: 10Rank: 10

    积分
    3100

    猫咪币纪念章国庆纪念章中秋纪念章荣誉开发者家财万贯管理员

    发表于 2021-2-12 16:08:55 | 显示全部楼层 | 阅读模式

    nextTick是什么?

    nextTick就是在vue的dom更新之后,回调某些函数进行一些处理

    为什么有时候使用nextTick没有反应

    因为某些时候在你使用nextTick可能组件内部也在使用nextTick

    这个时候目前我认为唯一个解决方法就是在nextTick后继续nextTick或者使用setinterval

    使用nextTick的原理是在对方处理之后我们再次处理,多次嵌套

    使用setinterval的原理是任务队列的不同

    为什么setinterval可以在所有nextTick最后执行?

    在 Vue 2.4 之前都是使用的 microtasks,但是 microtasks 的优先级过高,在某 些情况下可能会出现比事件冒泡更快的情况,但如果都使用 macrotasks 又可能会出现 渲染的性能问题。所以在新版本中,会默认使用 microtasks,但在特殊情况下会使用 macrotasks,比如 v-on。

    microtasks是微任务

    macrotaks是宏任务

    通常的处理方式是主任务点-》微任务队列-》宏任务队列

    因为nextTick在通常情况下属于微任务队列

    而setinteval属于宏任务队列

    所以一般会在nexttick执行完成后再调用setinterval

    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表