在開發(fā)過程中遇到了題目描述的問題,使用 Google 搜索,中文答案很少,而且沒有令人滿意的。就在segmentfault上提了一個(gè)問題,而且很快我就發(fā)現(xiàn)被很多人收藏了該問題(SF網(wǎng)站問題被收藏時(shí),會(huì)收到消息提醒)。也有一些網(wǎng)友回答該問題,但是一直沒有優(yōu)質(zhì)的答案。 后來在 Stack overflow 找到比較好的答案,這個(gè)回答也是點(diǎn)“贊”數(shù)想當(dāng)高的。英文好的同學(xué)建議直接閱讀英文,英文不好的同學(xué)可以閱讀下面我的翻譯(英文水平有限,沒有按照字句翻譯,只是根據(jù)我對(duì)他們的理解來翻譯)。 瀏覽器中報(bào)錯(cuò)的信息如下:![]() 答案描述:這個(gè)問題主要發(fā)生在當(dāng)Blink(Chrome的渲染引擎)決定延時(shí)執(zhí)行一個(gè)定時(shí)器函數(shù)的時(shí)候。比如:通過requestAnimationFrame,setTimeout,setInterval這些對(duì)象執(zhí)行的函數(shù)。因?yàn)檫@些對(duì)象在執(zhí)行函數(shù)時(shí)至少要花費(fèi) 50ms的時(shí)間,如果在這個(gè)時(shí)候剛好有用戶在網(wǎng)頁上輸入操作,Blink會(huì)優(yōu)先執(zhí)行用戶的輸入操作(比如:scrolls事件,tap事件)。 如果你的JavaScript代碼在運(yùn)行時(shí)也出現(xiàn)了這樣的問題,可能是使用者觸發(fā)了同樣的“行為”(指在執(zhí)行定時(shí)器函數(shù)時(shí),剛好有用戶在操作)。下面有幾種方式來復(fù)現(xiàn)這個(gè)問題:
在console(控制臺(tái))中打印的消息指向的問題(chromium平臺(tái)bug列表),可以從第40條評(píng)論中直接找到解決該問題的方法:
![]() 英文原文如果閱讀中文后還無法理解可以參考英文截圖
![]() ![]() |
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!