一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

認(rèn)識(shí)延遲時(shí)間為0的setTimeout

讓我們看看我之前的文章:JavaScript的9個(gè)陷阱及評(píng)點(diǎn),在第 9 點(diǎn) Focus Pocus 中提到的問(wèn)題。原作者對(duì)這個(gè)認(rèn)識(shí)有所偏差,其實(shí)不只是 IE 的問(wèn)題,而是現(xiàn)有 JavaScript 引擎對(duì)于線程實(shí)現(xiàn)的問(wèn)題(關(guān)于線程,我的概念其實(shí)不多,如果不對(duì),希望讀者多多指教)。. 我們來(lái)看 1 和 2。如果你能看看源代碼,會(huì)發(fā)現(xiàn)我們的任務(wù)很簡(jiǎn)單,就是給文檔增加一個(gè) input 文本框,并聚焦和選中。請(qǐng)現(xiàn)在分別點(diǎn)擊一下,可以看到,1 并沒(méi)有能夠聚焦和選中,而 2 可以。它們之間的區(qū)別在于,在執(zhí)行:

input.focus();
input.select();
時(shí), 2 多了一個(gè)延遲時(shí)間為 0 的 setTimeout 的外圍函數(shù),即:

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

在實(shí)踐中,setTimeout 會(huì)在其完成當(dāng)前任何延宕事件的事件處理器的執(zhí)行,以及完成文檔當(dāng)前狀態(tài)更新后,告訴瀏覽器去啟用 setTimeout 內(nèi)注冊(cè)的函數(shù)。

其實(shí),這是一個(gè)把需要執(zhí)行的任務(wù)從隊(duì)列中跳脫的技巧。回到前面的例子,JavaScript 引擎在執(zhí)行 onkeypress 時(shí),由于沒(méi)有多線程的同步執(zhí)行,不可能同時(shí)去處理剛創(chuàng)建元素的 focus 和 select 事件,由于這兩個(gè)事件都不在隊(duì)列中,在完成 onkeypress 后,JavaScript 引擎已經(jīng)丟棄了這兩個(gè)事件,正如你看到的例子 1 的情況。而在例子 2 中,由于setTimeout可以把任務(wù)從某個(gè)隊(duì)列中跳脫成為新隊(duì)列,因而能夠得到期望的結(jié)果。

這才是延遲事件為 0 的setTimeout的真正目的。在此,你可以看看例子 3,它的任務(wù)是實(shí)時(shí)更新輸入的文本,現(xiàn)在請(qǐng)?jiān)囋嚕銜?huì)發(fā)現(xiàn)預(yù)覽區(qū)域總是落后一拍,比如你輸 a, 預(yù)覽區(qū)并沒(méi)有出現(xiàn) a, 在緊接輸入 b 時(shí), a 才不慌不忙地出現(xiàn)。其實(shí)我們是有辦法讓預(yù)覽區(qū)跟輸入框同步地,在此我沒(méi)有給出答案,因?yàn)樯厦嫠f(shuō)的,就是解決思路,try it yourself! 

JavaScript技術(shù)認(rèn)識(shí)延遲時(shí)間為0的setTimeout,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 手机在线日韩高清理论片 | 中文字幕一区二区三区 精品 | 国产免费麻豆 | 91精品欧美一区二区三区 | 久久精品无码一区二区日韩av | 男女视频在线观看免费高清观看 | 久久精品视频一区二区三区 | 国产成人永久免费视 | 在线看黄网站 | 久久精品91 | 色婷婷视频在线观看 | 丁香激情综合 | 成人自拍视频在线观看 | 怡红院免费的全部视频 | 亚洲综合在线网 | 国产精品久久久久久一级毛片 | 久久午夜精品2区 | 日本精品视频一区二区三区 | 国产免费黄色大片 | 在线观看亚洲 | 婷婷伊人五月天 | 一卡二卡≡卡四卡亚洲高清 | 夜色成人免费观看 | 欧美xxxwww| 福利精品一区 | 午夜精品视频在线看 | 九九久久精品 | 亚洲欧美日韩国产精品第不页 | 91在线视频免费91 | 综合久久久久久中文字幕 | 欧美成人午夜视频 | 精品一区二区三区高清免费观看 | 一区二区视频在线播放 | 国产在线一区二区三区 | 国产精品福利在线 | 韩国视频一区 | 黄色小视频在线免费看 | 美女网站黄免费 | 成人影院vs一区二区 | 国产欧美日韩综合精品无毒 | 国产视频成人 |