栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JavaScript为什么setTimeout(fn,0)有时有用?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaScript为什么setTimeout(fn,0)有时有用?

在问题中,存在以下竞争条件:

  1. 浏览器尝试初始化下拉列表,准备对其选定的索引进行更新,以及
  2. 您的代码来设置选定的索引

您的代码始终在这场比赛中取胜,并在浏览器就绪之前尝试设置下拉菜单,这意味着该错误将出现。

之所以存在这种竞争,是因为Javascript具有与页面渲染共享的单个执行线程。实际上,运行Javascript会阻止DOM的更新。

您的解决方法是:

setTimeout(callback, 0)

调用

setTimeout
一个回调,以及零作为第二个参数将安排回调运行 异步 ,最短的延迟之后-
这将是10毫秒左右,当标签具有焦点和执行Javascript的线程不是忙。

因此,OP的解决方案是将选定索引的设置延迟大约10ms。这为浏览器提供了初始化DOM的机会,从而修复了该错误。

Internet Explorer的每个版本都表现出古怪的行为,因此有时需要这种解决方法。另外,它可能是OP代码库中的真正错误。




转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/374169.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号