成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 前端
看過我對JavaScript 性能優化相關的討論的同學們一定很了解我的一個癖好,就是將一大段的script分解成多個塊來執行。通過使用setTimeout(),你可以去改變特定代碼執行的時間,從而做到讓UI現場執行已經在隊列里的任務。

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

  1. setTimeout(function(){  
  2.  
  3.    //do  something  
  4.  
  5. }, 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線程空閑的時候執行?;镜挠梅ǎ?/p>

  1. var id = setImmediate(function(){  
  2.  
  3.     //do something  
  4.  
  5. }); 

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

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

  1. setImmediate(function(doc, win){  
  2.     //do something  
  3. }, document, window); 

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

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

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

原文:http://w3ctech.com/b/archives/597

【編輯推薦】

  1. Google強推Dart語言替代JavaScript 意欲何為?
  2. 在.NET中使用Javascript作為腳本語言
  3. JavaScript設計模式深入分析
  4. JavaScript有關的10個秘密和怪癖
  5. 10個***Web移動開發JavaScript框架推薦

 

責任編輯:陳貽新 來源: W3ctech
相關推薦

2023-06-26 18:13:56

開源API

2012-02-21 22:55:55

MDT 2010Windows 7

2009-04-16 17:30:00

可伸縮管理集成

2013-05-30 10:20:39

系統架構

2009-09-16 10:00:14

可伸縮性Web服務

2009-08-20 10:30:55

可伸縮性系統

2009-11-11 16:07:09

OSPF路由協議

2012-01-18 10:41:29

ibmdw

2015-07-28 10:14:33

HBasehadoop

2015-09-23 14:01:51

2013-08-20 10:53:13

Minuum單行鍵盤A可穿戴Minuum

2015-09-17 09:30:50

云架構可伸縮性風險

2012-11-07 14:32:47

寶德云計算云服務

2015-06-29 11:29:08

2010-11-04 13:55:26

DB2 SQL腳本批量

2024-03-27 10:27:35

延遲垃圾收集器

2021-12-24 16:59:14

前端Web框架

2023-12-21 11:53:34

KubernetesKEDA云原生

2010-07-01 14:05:34

SQL Server數

2023-10-12 09:48:00

微服務工具
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜在线视频 | 亚洲成人一区二区 | 不用播放器看的av | 91日日| 国产91精品久久久久久久网曝门 | www.四虎.com| 亚洲一区二区三区久久久 | 日本一道本 | 成人免费观看男女羞羞视频 | 91高清在线视频 | 亚洲精品视频二区 | 97在线观看| 免费三级网站 | 欧美影院 | 国产成人99久久亚洲综合精品 | 日本免费一区二区三区四区 | 久久久久国产一区二区三区四区 | 中文字幕 国产 | 一区二区三区四区毛片 | 电影午夜精品一区二区三区 | 最新国产精品精品视频 | 国产精品成人一区二区三区 | 一级大黄 | 中文字幕一区二区三区精彩视频 | 欧美日韩在线一区二区 | 亚洲 欧美 另类 综合 偷拍 | 美女视频三区 | 午夜精品久久久 | japanhd美女动 | 日韩精品国产精品 | 亚洲一区二区三区在线免费 | 中日韩欧美一级片 | 日韩视频在线免费观看 | 久久久久免费精品国产小说色大师 | 国产精品中文在线 | 蜜桃在线视频 | 国产精品揄拍一区二区 | 极品销魂美女一区二区 | 国产高清视频一区 | 黄色大片在线视频 | 黄色片网站国产 |