本篇文章為大家展示了怎么進行Web Worker線程處理,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
成都創(chuàng)新互聯(lián)公司專注于天津企業(yè)網(wǎng)站建設,自適應網(wǎng)站建設,電子商務商城網(wǎng)站建設。天津網(wǎng)站建設公司,為天津等地區(qū)提供建站服務。全流程按需網(wǎng)站建設,專業(yè)設計,全程項目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務
因此,瀏覽器每次只能處理這些任務中的一個,并且任意一個任務都能阻止其他任務的執(zhí)行。
手動代碼檢測:
<div onclick="jsTest">...</div> function jsTest(){ var start = new Date().getMilliseconds();//這里是一個開銷很大的代碼var time = stop - start;alert("jsTest() executes in " + time + " milliseconds"); }
fireBug的性能分析器
可以在測量的代碼中加入特定代碼來收集性能統(tǒng)計信息,或者在特定時間中實時檢驗具體執(zhí)行的代碼來監(jiān)視運行時間。后者分析的代買性能失真少,但獲取到的數(shù)據(jù)質(zhì)量會第一點。你可以通過(點擊“發(fā)送”按鈕)
然后再星星firebug性能分析器查看耗時。
使用多線程把開銷大的代碼從與用戶交互的線程中剝離開來。多線程的基本問題是不同的線程可以訪問并修改相同的地址。(我們需要的是一種像多線程那樣能多任務執(zhí)行卻沒有線程之間互相侵入危險的方法)
讓我們來看一下如何利用Web Workers API 對值進行解封裝。如下展示了如何創(chuàng)建并啟動Worker:
//創(chuàng)建并開始執(zhí)行workervar worker = new Worker("js/decrypt.js"); //注冊事件處理程序,當worker給主線程發(fā)送信息時執(zhí)行worker.onmessage = function(e){ alert("The decrypted value is" + e.data);} //發(fā)送信息給worker,這里指待解密的值worker.postMessage(getValueToDecrypt()); //下面為js/decrypt.js中的內(nèi)容://注冊用來接收來自主線程信息的處理程序onmessage = function(e){ //獲取傳過來的數(shù)據(jù) var valueToDecrypt = e.data; //TODO:這里實現(xiàn)解密功能 //把值返回給主線程 this.postMessage(decryptedValue);}
在頁面上任何開銷很大的(例如,長時間運行)javascript操作都應委托給Worker;可以是運行速度更快。
//創(chuàng)建worker Pool,它會產(chǎn)生Workervar workerPool = google.gears.factory.create('beta.workpool'); //注冊事件處理程序,他接收來自Worker的信息workerPool.onmessage = function(ignorel, ignorel2, e){ alert("The decrypted value is" + e.body);} //創(chuàng)建Workervar workerId = workerPool.createWorkerFromUrl("js/decrypt.js"); //發(fā)送信息到這個WorkerworkerPool.sendMessage(getValueToDecrpt(). workerId); //下面是js/decrypt.js的Gears版本: var workerPool = google.gears.workerPool;workerPool.onmessage = function(ignorel, ignorel2, e){ //獲得傳遞過來的數(shù)據(jù) var getValueToDecrpt = e.body; //TODO:這里實現(xiàn)封裝功能 //把值返回給主線程 workerPool.sendMessage(decryptedValue, e.sender);}
6. 定時器
var funState = {};function expensiveOperation(){ var startTime = new Date().getMilliseconds(); while ((new Date().getMilliseconds() - startTime) < 80){ //TODO:它用如下方法執(zhí)行開銷很大的運算: //它在迭代的語塊中執(zhí)行80毫秒內(nèi)完成的工作, //然后修改本函數(shù)外部"function"中的狀態(tài)。 } if(!funState.isFinished){ //退出10秒后再執(zhí)行expensiveOperation; //用較大的值進行試驗,以在Ui響應和性能上取得合適的平衡 setTimeout(expensiveOperation(),10); }}
XHRHttpRequest: XHR 有同步與異步的執(zhí)行模式。在異步模式中,XHR實質(zhì)上就是一個擁有專用API的Web Worker。
XHR在在同步模式中,會導致用戶界面的持續(xù)延遲時間與XHR發(fā)送他的請求并解析來自服務端響應的整體耗時一樣。還會導致不可預知和用戶不能容忍的界面延遲。
上述內(nèi)容就是怎么進行Web Worker線程處理,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
當前名稱:怎么進行WebWorker線程處理
轉(zhuǎn)載注明:http://sd-ha.com/article42/jocpec.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設、網(wǎng)站設計、ChatGPT、網(wǎng)站營銷、網(wǎng)站排名、用戶體驗
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)