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

使用setimmediate實現(xiàn)可伸縮執(zhí)行的腳本

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

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

  1. setTimeout(function(){  
  2.  
  3.    //do  something  
  4.  
  5. }, 50) 

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

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

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

來自W3C Web Performance Working Group的一個方案“ Efficient Script Yielding ”,定義了一個新的函數(shù)去實現(xiàn)腳本的分塊執(zhí)行的setImmediate()方法。 這個方法接收一個函數(shù)作為參數(shù),它可以讓這個函數(shù)在UI線程空閑的時候執(zhí)行?;镜挠梅ǎ?/p>

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

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

我們也可以給它傳遞一些參數(shù)

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

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

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

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

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

【編輯推薦】

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

 

責(zé)任編輯:陳貽新 來源: W3ctech
相關(guān)推薦

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

系統(tǒng)架構(gòu)

2009-09-16 10:00:14

可伸縮性Web服務(wù)

2009-08-20 10:30:55

可伸縮性系統(tǒng)

2009-11-11 16:07:09

OSPF路由協(xié)議

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-06-29 11:29:08

2015-09-17 09:30:50

云架構(gòu)可伸縮性風(fēng)險

2010-11-04 13:55:26

DB2 SQL腳本批量

2012-11-07 14:32:47

寶德云計算云服務(wù)

2024-03-27 10:27:35

延遲垃圾收集器

2021-12-24 16:59:14

前端Web框架

2023-10-12 09:48:00

微服務(wù)工具

2010-11-01 17:24:30

DB2批量執(zhí)行

2023-12-21 11:53:34

KubernetesKEDA云原生
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 一区二区三区高清 | 成人在线观看亚洲 | 99久久中文字幕三级久久日本 | 成人在线中文字幕 | 美女网站视频免费黄 | 色橹橹欧美在线观看视频高清 | 亚洲视频免费在线观看 | 国产成人99久久亚洲综合精品 | 久久国产精彩视频 | 午夜码电影 | 成在线人视频免费视频 | 亚洲人成人一区二区在线观看 | 本道综合精品 | 中文在线观看视频 | 911精品国产 | 久久午夜精品福利一区二区 | 国产乱码精品1区2区3区 | 一二三区视频 | 国产91视频播放 | 国产良家自拍 | 嫩草伊人 | 精品久久久久久久久久久 | 91精品国产色综合久久 | 日日夜夜天天干 | 亚洲精品精品 | 欧美成人一区二区 | 亚洲欧美综合 | 特黄视频| 日韩精品一区二区在线观看 | 亚洲综合在线视频 | 色永久 | 国产一区二区三区四区区 | 欧美激情亚洲天堂 | 免费在线观看一级毛片 | 中文字幕在线不卡播放 | 日韩精品区 | www.色五月.com| 99re视频在线 | 欧美成人精品一区二区男人看 | 日韩中文字幕在线 | 成人av电影在线观看 |