认识延迟时间为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脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++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會一直重複執行,直到被取消。

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

如何解決Java中的網路延遲問題網路延遲是指在資料傳輸過程中,由於各種原因導致資料的發送和接收之間出現的時間延遲。在進行網路通訊或開發網路應用程式時,我們經常會遇到網路延遲的問題。本文將介紹一些解決Java中網路延遲問題的方法,並提供具體的程式碼範例。一、使用多執行緒網路延遲通常是由於網路請求的阻塞所導致的。為了避免網路請求阻塞主線程,我們可以使用多線程來處理網

在使用win10系統的過程中,如果遇到了滑鼠拖曳視窗有延遲卡頓的情況,小編覺得應該是系統設定的問題或是驅動問題。可以嘗試重裝驅動或是在運行中使用main.cpl程式碼來解決問題,快來看看詳細的win10滑鼠拖曳視窗有延遲解決方法吧。 win10滑鼠拖曳窗口有延遲怎麼辦:方法一(有線無線通用):1、在win10系統桌面,按下「win+r」快捷鍵,開啟運作窗口,輸入:main.cpl然後回車確定。 2.然後開啟滑鼠屬性對話框,點擊滑鼠鍵,可以透過滑動「雙擊速度」中的遊標來調整滑鼠雙擊速度。 3、然後點擊

在超級人類遊戲中有玩家遇到了登入發生延遲。請重試。點擊確認按鈕將立即退出GeeGee客戶端的提示,今天小編就帶來了解決的方法,快來一起看看吧。超級人類登入發生延遲請重試解決方法「Steammustberunningtoplaythisgame」這個提示的大概意思是steam不允許運行這個遊戲。可能是因為沒有安裝steam的原因,也有可能是沒有用管理員身分執行的原因,也可能是卡片了的原因。解決方法:1.第一個方法是下載一個steam平台,並打開安裝盤,把crack資料夾裡的東西放到遊戲資料夾裡。 2

出品|虎嗅科技組作者|齊健編輯|陳伊凡頭圖|FlagStudio「OpenAI會再開源大模型嗎?」當智源研究院理事長張宏江向線上參加2023年智源大會的OpenAI首席執行官SamAltman問及開源問題時,SamAltman微笑表示,OpenAI未來會開放更多程式碼,但沒有具體的開源時間表。這樣的討論來自這次智源大會的議題之一——開源大模型。 6月9日,2023年智源大會在北京舉行,座無虛席。在大會現場,「算力」、「大模型」「生態」等與AI相關的字詞時不時出現在與會者的聊天中,還有這個產業鏈上的各家
