91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用setimmediate實現可伸縮執行的腳本

發布時間:2021-09-01 07:05:47 來源:億速云 閱讀:168 作者:chen 欄目:web開發

這篇文章主要介紹“如何使用setimmediate實現可伸縮執行的腳本”,在日常操作中,相信很多人在如何使用setimmediate實現可伸縮執行的腳本問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何使用setimmediate實現可伸縮執行的腳本”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

看過我對JavaScript 性能優化相關的討論的同學們一定很了解我的一個癖好,就是將一大段的script分解成多個塊來執行。通過使用setTimeout(),你可以去改變特定代碼執行的時間,從而做到讓UI現場執行已經在隊列里的任務。比如,你可以通過這樣的方式把要執行的代碼在50ms后加到UI線程隊列里:

setTimeout(function(){      //do  something   }, 50)

那么,在50ms后,這個函數就會被添加到隊列里,并在輪到它的時候執行。調用setTimeout()方法可以允許當前的JavaScript任務完成從而下一個UI更新可以順利進行。

雖然我一直很支持使用setTimeout()來提高性能,但是還是存在幾個問題。***個并且是最重要的問題是不同的瀏覽器有著不一樣的時間精確度。IE8和更早的IE的時間精確度是15.6ms,而IE9,或者更新的瀏覽器,還有chrome的時間精確度已經到達4ms。所有的瀏覽器都強制給setTimeout設置了一個***延遲值,所以setTimeout(fn, 0)實際上在大于0ms的時間之后才會執行,具體取決于對應的時間精確度。

另一個是電源使用的問題。管理時間關系到筆記本或者手機的電池使用。Chrome曾經嘗試把時間精確度降低到1ms,結果發現會增加筆記本電池的損耗。***還是覺得把時間精確度設置回4ms。其他瀏覽器也做過類似的嘗試,不過許多油門計時器分辨率為1s。微軟發現時間精確度為1ms的時候,電池的使用時間會降低25%。實際上,IE9會判斷筆記本是否在使用電池的情況下運行,如果是電池,則時間精確度為15.6ms,如果是直接插的電源則時間精確度會降低到4ms。

來自W3C Web Performance Working Group的一個方案“ Efficient Script Yielding ”,定義了一個新的函數去實現腳本的分塊執行的setImmediate()方法。 這個方法接收一個函數作為參數,它可以讓這個函數在UI線程空閑的時候執行。基本的用法:

var id = setImmediate(function(){       //do something   });

setImmediate()函數會返回一個id,這個id可以通過clearImmediate()方法來取消這個過程。

我們也可以給它傳遞一些參數

setImmediate(function(doc, win){      //do something  }, document, window);

用這個方式來傳遞可選的參數意味著你不需要總是使用一個閉包來讓函數包含一些有用的信息。

setImmediate()可以讓瀏覽器不需要去管理進程的定時器。不需要去等待更耗電的系統中斷,瀏覽器只需要等待UI隊列空閑,然后把新的JavaScript任務插入進去。Node.js的開發者會比較容易理解這個問題,因為process.nextTick()在自己的環境里做了相同的事情。

現在只有ie10支持這個方法,而且因為還沒有完全定下來,所以使用了msSetIntermediate()。IE10的Test Drive上也有一個setImmediate()的例子,展示了新方法帶來的性能提升。這個例子使用一個延遲來排列一些數據,排序之后的狀態會直接展示出來。

到此,關于“如何使用setimmediate實現可伸縮執行的腳本”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

琼结县| 乌兰县| 闻喜县| 宁晋县| 林口县| 德惠市| 吐鲁番市| 衡东县| 苏州市| 兴义市| 磴口县| 华池县| 高邮市| 凯里市| 柯坪县| 瑞安市| 上饶市| 陇西县| 靖边县| 托克逊县| 齐齐哈尔市| 米泉市| 金山区| 巢湖市| 新宁县| 名山县| 紫金县| 封丘县| 龙南县| 兴城市| 河东区| 克拉玛依市| 共和县| 大余县| 右玉县| 宜兰市| 梁山县| 清河县| 宁乡县| 格尔木市| 钟祥市|