知识卡片
setTimeout(fn,0)让出UI线程
内容
触发轮播切换完成后的自定义事件时,Bootstrap特意用setTimeout(fn,0)包裹,而不是同步直接调用。JS和UI渲染共用同一个线程,同步执行长回调会阻塞界面更新;setTimeout(fn,0)把回调塞进下一轮事件循环,让当前这一帧先完成UI绘制,再执行后续代码,是避免长任务卡顿界面的通用技巧,即使延迟设为0也有意义。
参考来源
《深入理解Bootstrap》第5章《JavaScript插件》
知识卡片
触发轮播切换完成后的自定义事件时,Bootstrap特意用setTimeout(fn,0)包裹,而不是同步直接调用。JS和UI渲染共用同一个线程,同步执行长回调会阻塞界面更新;setTimeout(fn,0)把回调塞进下一轮事件循环,让当前这一帧先完成UI绘制,再执行后续代码,是避免长任务卡顿界面的通用技巧,即使延迟设为0也有意义。