首页 web前端 js教程 认识延迟时间为0的setTimeout_javascript技巧

认识延迟时间为0的setTimeout_javascript技巧

May 16, 2016 pm 07:04 PM
settimeout 延迟

让我们看看我之前的文章:JavaScript的9个陷阱及评点,在第 9 点 Focus Pocus 中提到的问题。原作者对这个认识有所偏差,其实不只是 IE 的问题,而是现有 JavaScript 引擎对于线程实现的问题(关于线程,我的概念其实不多,如果不对,希望读者多多指教)。. 我们来看 1 和 2。如果你能看看源代码,会发现我们的任务很简单,就是给文档增加一个 input 文本框,并聚焦和选中。请现在分别点击一下,可以看到,1 并没有能够聚焦和选中,而 2 可以。它们之间的区别在于,在执行:

input.focus();
input.select();
时, 2 多了一个延迟时间为 0 的 setTimeout 的外围函数,即:

setTimeout(function(){
 input.focus();
 input.select();
}, 0);
按照 JavaScript: The Definitive Guide 5th 的 14.1 所说:

在实践中,setTimeout 会在其完成当前任何延宕事件的事件处理器的执行,以及完成文档当前状态更新后,告诉浏览器去启用 setTimeout 内注册的函数。

其实,这是一个把需要执行的任务从队列中跳脱的技巧。回到前面的例子,JavaScript 引擎在执行 onkeypress 时,由于没有多线程的同步执行,不可能同时去处理刚创建元素的 focus 和 select 事件,由于这两个事件都不在队列中,在完成 onkeypress 后,JavaScript 引擎已经丢弃了这两个事件,正如你看到的例子 1 的情况。而在例子 2 中,由于setTimeout可以把任务从某个队列中跳脱成为新队列,因而能够得到期望的结果。

这才是延迟事件为 0 的setTimeout的真正目的。在此,你可以看看例子 3,它的任务是实时更新输入的文本,现在请试试,你会发现预览区域总是落后一拍,比如你输 a, 预览区并没有出现 a, 在紧接输入 b 时, a 才不慌不忙地出现。其实我们是有办法让预览区跟输入框同步地,在此我没有给出答案,因为上面所说的,就是解决思路,try it yourself! 

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

斗鱼直播怎么关闭延迟?-斗鱼直播怎么看回放? 斗鱼直播怎么关闭延迟?-斗鱼直播怎么看回放? Mar 18, 2024 am 10:55 AM

斗鱼直播怎么关闭延迟?1、用户首先点击进入斗鱼直播,如图所示。2、接着用户在“斗鱼直播”窗口中点击“设置”,如图所示。3、然后在“设置”窗口中,点击“高级”,如图所示。4、最后用户在“高级”窗口中,将“低延时模式默认开启”关闭就能取消延迟了,如图所示。斗鱼直播怎么看回放?1、第一步,我们先找到电脑桌面上的斗鱼直播软件图标,然后右键单击选择“打开”选项2、第二步,打开斗鱼直播软件之后,我们在页面左侧找到“关注”选项,点击打开该选项并在右侧页面中找到一个自己喜欢的主播,点击“录像”选项3、第三步,进

队列技术在PHP与MySQL中的消息延迟和消息重试的应用 队列技术在PHP与MySQL中的消息延迟和消息重试的应用 Oct 15, 2023 pm 02:26 PM

队列技术在PHP与MySQL中的消息延迟和消息重试的应用摘要:随着Web应用程序的不断发展,对于高并发处理和系统可靠性方面的需求越来越高。队列技术作为一种解决方案,被广泛应用于PHP与MySQL中,以实现消息延迟和消息重试的功能。本文将介绍队列技术在PHP与MySQL中的应用,包括队列的基本原理、使用队列实现消息延迟的方法和使用队列实现消息重试的方法,并给出

settimeout和setinterval有什么区别 settimeout和setinterval有什么区别 Aug 15, 2023 pm 02:06 PM

settimeout和setInterval的区别:1、触发时间,settimeout是一次性的,它在设定延迟时间之后执行一次函数,而setinterval是重复性的,它会以设定的时间间隔重复执行函数;2、执行次数,settimeout只执行一次,而setinterval会一直重复执行,直到被取消。

如何解决Java中的网络延迟问题 如何解决Java中的网络延迟问题 Oct 08, 2023 am 11:21 AM

如何解决Java中的网络延迟问题网络延迟是指在数据传输过程中,由于各种原因导致数据的发送和接收之间出现的时间延迟。在进行网络通信或者开发网络应用程序时,我们经常会遇到网络延迟的问题。本文将介绍一些解决Java中网络延迟问题的方法,并提供具体的代码示例。一、使用多线程网络延迟通常是由于网络请求的阻塞导致的。为了避免网络请求阻塞主线程,我们可以使用多线程来处理网

如何解决Windows 10鼠标拖动窗口时的延迟问题 如何解决Windows 10鼠标拖动窗口时的延迟问题 Jan 06, 2024 pm 05:28 PM

在使用win10系统的过程中,如果遇到了鼠标拖动窗口有延迟卡顿的情况,小编觉得应该是系统设置的问题或者是驱动问题。可以尝试重装驱动或者是在运行中使用main.cpl代码来解决问题,快来看看详细的win10鼠标拖动窗口有延迟解决方法吧。win10鼠标拖动窗口有延迟怎么办:方法一(有线无线通用):1、在win10系统桌面,按下“win+r”快捷键,打开运行窗口,输入:main.cpl然后回车确定。2、然后打开鼠标属性对话框,点击鼠标键,可以通过滑动“双击速度”中的游标来调整鼠标双击速度。3、然后点击

药到病除:一招制胜,彻底解决 PHP 服务器优化难题,从此告别卡顿! 药到病除:一招制胜,彻底解决 PHP 服务器优化难题,从此告别卡顿! Feb 20, 2024 am 09:43 AM

PHP作为广受欢迎的WEB开发语言,但时常会遇到卡顿和延迟的问题。这不仅影响了用户体验,也让开发者和运维人员感到头疼。为了解决这一难题,多方团队和机构提出了多种解决方案,其中一款脱颖而出,以其高效性和可靠性获得了众多赞誉。识别根源问题要解决php卡顿和延迟难题,第一步必须是识别根源问题。最常见的原因为:系统配置:缺乏足够的系统资源,包括CPU、RAM和磁盘空间。软件环境:PHP相关软件的配置不当,包括PHP本身、Web伺服器和相关插件。网络问题:缺乏稳固的网络,或PHP伺服器与其他系统之间的关系

超级人类登录发生延迟请重试解决方法 超级人类登录发生延迟请重试解决方法 Mar 30, 2024 pm 08:31 PM

在超级人类游戏中有玩家遇到了登录发生延迟。请重试。点击确认按钮将立即退出GeeGee客户端的提示,今天小编就带来了解决的方法,快来一起看看吧。超级人类登录发生延迟请重试解决方法“Steammustberunningtoplaythisgame”这个提示的大概意思是steam不允许运行这个游戏。可能是因为没有安装steam的原因,也有可能是没有用管理员身份运行的原因,或者可能是卡了的原因。解决方法:1、第一种方法是下载一个steam平台,并打开安装盘,把crack文件夹里的东西放到游戏文件夹里。2

中国最强AI研究院的大模型为何迟到了 中国最强AI研究院的大模型为何迟到了 Jun 26, 2023 pm 07:43 PM

出品|虎嗅科技组作者|齐健编辑|陈伊凡头图|FlagStudio“OpenAI会再开源大模型吗?”当智源研究院理事长张宏江向线上参加2023年智源大会的OpenAI首席执行官SamAltman问及开源问题时,SamAltman微笑表示,OpenAI未来会开放更多代码,但没有具体的开源时间表。这样的讨论来自这次智源大会的话题之一——开源大模型。6月9日,2023年智源大会在北京举行,座无虚席。在大会现场,“算力”、“大模型”“生态”等与AI相关的词时不时出现在参会者的聊天中,还有这个产业链上的各家

See all articles