认识延迟时间为0的setTimeout_javascript技巧
让我们看看我之前的文章: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!

热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

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

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

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

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

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

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

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

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