国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JavaScript Web Worker用法指南

這篇具有很好參考價(jià)值的文章主要介紹了JavaScript Web Worker用法指南。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

????? 個(gè)人主頁(yè):《愛蹦跶的大A阿》

??當(dāng)前正在更新專欄:《VUE》?、《JavaScript保姆級(jí)教程》、《krpano》

JavaScript Web Worker用法指南,JavaScript保姆級(jí)教程,前端,javascript,開發(fā)語(yǔ)言??

JavaScript Web Worker用法指南,JavaScript保姆級(jí)教程,前端,javascript,開發(fā)語(yǔ)言?

? 前言

????????Web Worker可以將耗時(shí)任務(wù)放到后臺(tái)執(zhí)行,避免阻塞UI。本文將詳細(xì)介紹Web Worker的用法,讓你可以提升web應(yīng)用性能。

通過(guò)本文你將學(xué)習(xí):

  • Web Worker的工作原理
  • 不同類型worker的區(qū)別
  • worker的創(chuàng)建和通信用法
  • worker間的數(shù)據(jù)傳遞方法
  • worker的調(diào)試技巧
  • worker可以提升應(yīng)用性能的場(chǎng)景
  • 彌補(bǔ)worker在老瀏覽器不兼容的方法

準(zhǔn)備讓W(xué)eb Worker成為你的網(wǎng)頁(yè)優(yōu)化利器了嗎?讓我們開始吧!

JavaScript Web Worker用法指南,JavaScript保姆級(jí)教程,前端,javascript,開發(fā)語(yǔ)言?

第一節(jié):Web Worker簡(jiǎn)介

Web Worker可以將JS代碼運(yùn)行在后臺(tái)線程,實(shí)現(xiàn)多線程:

  • 不阻塞主UI線程,提升互動(dòng)性
  • 與主線程同時(shí)運(yùn)行,實(shí)現(xiàn)并行
  • 通過(guò)消息傳遞與主線程通信

DEDICATED WORKER:專屬于一個(gè)頁(yè)面 SHARED WORKER:可被多個(gè)頁(yè)面共享

第二節(jié):創(chuàng)建Worker

創(chuàng)建一個(gè)Dedicated Worker的基本步驟是:

  1. 主線程中用new Worker()實(shí)例化一個(gè)Worker對(duì)象,并傳入腳本的路徑
  2. 在指定的js腳本中使用self對(duì)象對(duì)worker進(jìn)行編程
  3. self對(duì)象表示worker的全局作用域,可以添加事件監(jiān)聽器
  4. 常見的事件有onmessage、onerror等

一個(gè)典型的示例:

// 主線程
const worker = new Worker('work.js');

worker.postMessage('start');

// work.js
self.addEventListener('message', e => {
  console.log('worker recv:', e.data);
  self.postMessage('hello from worker');
});

Worker線程中不能直接訪問DOM,但可以通過(guò)postMessage()與主線程通信。

創(chuàng)建一個(gè)Shared Worker步驟類似,只是用SharedWorker實(shí)例,并可以指定worker的名稱。

Shared Worker可以被多個(gè)窗口訪問,從而共享同一個(gè)邏輯。

Dedicated Worker專屬于一個(gè)頁(yè)面文檔。根據(jù)實(shí)際需求選擇合適的Worker類型。

創(chuàng)建shared worker:

// 主線程
const worker = new SharedWorker('work.js');

// work.js 
self.addEventListener('connect', (e) => {
  // 收到連接
});

第三節(jié):worker間通信

主線程 -> worker:

worker.postMessage('hello');

worker -> 主線程:

self.postMessage('hi from worker');

?

  1. 主線程到worker的通信

主線程使用worker對(duì)象的postMessage()方法向worker發(fā)送消息:

// 主線程 
worker.postMessage('start');

?postMessage()可以發(fā)送各種數(shù)據(jù)類型,包括原始類型、對(duì)象、數(shù)組等。

  1. worker到主線程的通信

worker中使用self.postMessage()發(fā)送:

// worker內(nèi)
self.postMessage('message from worker');

?self代表worker的全局作用域。

  1. 接收消息

主線程通過(guò)worker.onmessage監(jiān)聽消息:

// 主線程
worker.onmessage = function(e) {
  console.log(e.data);
}

worker中通過(guò)self.onmessage監(jiān)聽:

// worker內(nèi) 
self.onmessage = function(e) {
  console.log(e.data);
}

e.data是消息內(nèi)容。

  1. 傳遞數(shù)據(jù)注意事項(xiàng)
  • 對(duì)象會(huì)串行化,記得調(diào)用JSON.parse()
  • 傳遞函數(shù)需要把函數(shù)字符串化

這些是worker間通信的主要方式,可以傳遞不同類型的數(shù)據(jù),充分利用多線程帶來(lái)的好處。

第五節(jié):Worker中的異步請(qǐng)求

Worker線程可以發(fā)出AJAX請(qǐng)求,使用與主線程相同的XMLHttpRequest對(duì)象:

// Worker內(nèi)
const xhr = new XMLHttpRequest();
xhr.open('GET', '/data');
xhr.onload = () => {
  self.postMessage(xhr.response); 
}
xhr.send();

這樣可以在Worker中完成異步數(shù)據(jù)加載,不影響主UI線程。

第六節(jié):調(diào)試Worker

主線程可以通過(guò)inspect()調(diào)試運(yùn)行中的Worker:

const worker = new Worker();
worker.inspect();

?

這會(huì)打開DevTools來(lái)調(diào)試worker線程。

也可以將console日志發(fā)送到主線程:

// Worker內(nèi)
self.postMessage(console.log.apply(console, arguments));

第七節(jié):使用場(chǎng)景

Worker常用于:

  • 超大數(shù)據(jù)排序、搜索、處理
  • 數(shù)據(jù)轉(zhuǎn)換與編譯,如Json、Excel
  • 高延遲任務(wù)或高計(jì)算工作,如機(jī)器學(xué)習(xí)

第八節(jié):兼容性和代替方案

低版本瀏覽器可能不支持Worker,可以使用polyfill或只在新瀏覽器使用。

也可以使用setTimeout模擬后臺(tái)線程。

? 結(jié)語(yǔ)? ? ?

????????在這篇文章中,我們?nèi)娼榻B了Web Worker的用法 - 它可以將JavaScript代碼運(yùn)行在后臺(tái)線程,實(shí)現(xiàn)多線程計(jì)算。

????????首先,我們看到Web Worker的優(yōu)點(diǎn),它不會(huì)阻塞主UI線程,可以實(shí)現(xiàn)并行執(zhí)行任務(wù)。然后,我們介紹了Dedicated Worker和Shared Worker的區(qū)別,以及創(chuàng)建和終止Worker的方法。

????????接下來(lái),我們重點(diǎn)講解了Worker之間的消息通信機(jī)制,這是利用多線程的關(guān)鍵。我們也討論了Worker中發(fā)起異步請(qǐng)求和調(diào)試技巧。

????????最后,給出了Web Worker的實(shí)際應(yīng)用場(chǎng)景,以及需要注意的兼容性問題。

????????我盡量用通俗的語(yǔ)言和示例給出了全面的講解,希望這篇文章可以幫助大家正確使用Web Worker來(lái)優(yōu)化web應(yīng)用性能。如果還有任何問題,歡迎在評(píng)論交流!

JavaScript Web Worker用法指南,JavaScript保姆級(jí)教程,前端,javascript,開發(fā)語(yǔ)言?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-802822.html

到了這里,關(guān)于JavaScript Web Worker用法指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • web前端Javascript—7道關(guān)于前端的面試題

    本文主要是web前端Javascript—的面試題,附上相關(guān)問題以及解決答案,希望對(duì)大家web前端Javascript閉包的學(xué)習(xí)有所幫助。 每個(gè)JavaScript 程序員都必須知道閉包是什么。在 JavaScript 面試中,你很可能會(huì)被問到的問題 以下是 7 個(gè)有關(guān) JavaScript的面試題,比較有挑戰(zhàn)性。不要查看答案

    2024年02月03日
    瀏覽(98)
  • web前端javaScript筆記——(11)DOM

    屬性 ????????????????????????????????????此事件發(fā)生在何時(shí) onabort 圖像的加載被中斷。 onblur???????????????????????????????????元素失去焦點(diǎn)。 anchange?????????????????????????????????域的內(nèi)容被改變 onclick ?當(dāng)用戶點(diǎn)擊某

    2024年01月19日
    瀏覽(29)
  • web前端javascript筆記——(13)事件(1)

    鼠標(biāo)/鍵盤屬性 altKey???????????????返回當(dāng)事件被觸發(fā)時(shí),“ALT”是否被按下。 button???????????????返回當(dāng)事件被觸發(fā)時(shí),哪個(gè)鼠標(biāo)按鈕被點(diǎn)擊 clientX???????????????返回當(dāng)事件被觸發(fā)時(shí),鼠標(biāo)指針的水平坐標(biāo)。 clientY???????????????返回當(dāng)事件被觸

    2024年01月25日
    瀏覽(27)
  • 【JavaScript保姆級(jí)教程】for循環(huán)與for循環(huán)遍歷數(shù)組

    【JavaScript保姆級(jí)教程】for循環(huán)與for循環(huán)遍歷數(shù)組

    JavaScript是一門強(qiáng)大的編程語(yǔ)言,它允許開發(fā)者有效地控制程序的流程。在JavaScript中,有多種循環(huán)結(jié)構(gòu)可供選擇,其中for循環(huán)是最常用的之一。本教程將深入探討for循環(huán)的基本概念,提供示例代碼,并展示如何使用for循環(huán)來(lái)遍歷數(shù)組。同時(shí),我們還將介紹如何在for循環(huán)中嵌套

    2024年02月06日
    瀏覽(28)
  • 【Javascript保姆級(jí)教程】if判斷語(yǔ)句的三種形式

    【Javascript保姆級(jí)教程】if判斷語(yǔ)句的三種形式

    嗨,歡迎來(lái)到Javascript保姆級(jí)教程!在編寫代碼時(shí),我們經(jīng)常需要根據(jù)不同的情況來(lái)做出不同的決策和操作。這時(shí)候,就需要用到條件判斷語(yǔ)句。今天,我們將學(xué)習(xí)Javascript中的三種主要條件判斷語(yǔ)句:if、if…else和if…else if…。讓我們一起來(lái)詳細(xì)了解它們吧! 首先,我們來(lái)介

    2024年04月22日
    瀏覽(23)
  • JavaScript保姆級(jí)教程 ——— 重難點(diǎn)詳細(xì)解析(萬(wàn)字長(zhǎng)文,建議收藏)

    JavaScript保姆級(jí)教程 ——— 重難點(diǎn)詳細(xì)解析(萬(wàn)字長(zhǎng)文,建議收藏)

    本文是整理了JS中的一些 重點(diǎn),難點(diǎn),以及不好理解的知識(shí)點(diǎn) 本文非常詳細(xì) ,深入的講解, 包學(xué)包會(huì) 1.1 函數(shù)(Function)是什么? 函數(shù)(方法)是由事件驅(qū)動(dòng)的或者當(dāng)它被調(diào)用時(shí)執(zhí)行的可重復(fù)使用的代碼塊 —— 官方說(shuō)明 向來(lái)覺得官方的文檔是有些生硬的,舉個(gè)例子: 函數(shù)可

    2023年04月08日
    瀏覽(25)
  • 2023年web前端開發(fā)之JavaScript進(jìn)階(一)

    2023年web前端開發(fā)之JavaScript進(jìn)階(一)

    接上篇博客進(jìn)行學(xué)習(xí),通俗易懂,詳細(xì) 博客地址: 2023年web前端開發(fā)之JavaScript基礎(chǔ)(五)基礎(chǔ)完結(jié)_努力的小周同學(xué)的博客-CSDN博客 學(xué)習(xí) 作用域 、變量提升、 閉包 等語(yǔ)言特征,加深對(duì) JavaScript 的理解,掌握變量賦值、函數(shù)聲明的簡(jiǎn)潔語(yǔ)法, 降低代碼的冗余度 。 理解作用域?qū)Τ绦?/p>

    2024年02月03日
    瀏覽(37)
  • web前端框架JS學(xué)習(xí)之JavaScript類型轉(zhuǎn)換

    web前端框架JS學(xué)習(xí)之JavaScript類型轉(zhuǎn)換

    vascript有多種數(shù)據(jù)類型,如字符串、數(shù)字、布爾等,可以通過(guò)typeof語(yǔ)句來(lái)查看變量的數(shù)據(jù)類型。數(shù)據(jù)類型轉(zhuǎn)換就是數(shù)據(jù)類型之間相互轉(zhuǎn)換,比如把數(shù)字轉(zhuǎn)成字符串、把布爾值轉(zhuǎn)成字符串、把字符串轉(zhuǎn)成數(shù)字等,這在工作也是經(jīng)常碰到的。 本期我們就給大家說(shuō)說(shuō)web前端框架JS學(xué)

    2024年02月10日
    瀏覽(90)
  • Web Worker的概念、用法、使用場(chǎng)景

    Web Worker的概念、用法、使用場(chǎng)景

    ? 目錄 1.?簡(jiǎn)介 2.?適用場(chǎng)景 2.1 復(fù)雜計(jì)算 2.2?后臺(tái)下載 2.3?數(shù)據(jù)處理 2.4?實(shí)時(shí)通信 3.?代碼示例 3.1 Worker特性檢測(cè) 3.2 Worker API 3.3 SharedWorker API 3.4?創(chuàng)建 JavaScript 文件 3.5?創(chuàng)建 Web Worker 4. 總結(jié) Web Worker ?使得在一個(gè)獨(dú)立于 Web 應(yīng)用程序主執(zhí)行線程的后臺(tái)線程中運(yùn)行腳本操作成為可

    2024年02月08日
    瀏覽(20)
  • Web前端大作業(yè)制作個(gè)人網(wǎng)頁(yè)(html+css+javascript)

    Web前端大作業(yè)制作個(gè)人網(wǎng)頁(yè)(html+css+javascript)

    ??個(gè)人網(wǎng)頁(yè)設(shè)計(jì)、???♂?個(gè)人簡(jiǎn)歷制作、?????簡(jiǎn)單靜態(tài)HTML個(gè)人網(wǎng)頁(yè)作品、?????個(gè)人介紹網(wǎng)站模板 、等網(wǎng)站的設(shè)計(jì)與制作。 ?個(gè)人網(wǎng)頁(yè)設(shè)計(jì)網(wǎng)站模板采用DIV CSS布局制作,網(wǎng)頁(yè)作品有多個(gè)頁(yè)面,如 :個(gè)人介紹(文字頁(yè)面)、我的作品(圖片列表)、個(gè)人技能(圖文頁(yè)

    2024年02月10日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包