js多線程 web worker簡單使用

當(dāng)js一個時間內(nèi)有大量的計算的時候,會導(dǎo)致瀏覽器卡頓。使用web worker,把較大計算量的方法分給分線程處理,避免主線程卡死影響用戶體驗。那么線程之間的數(shù)據(jù)是怎么交互的呢?

以裴波那契數(shù)列計算為例

主線程代碼:

let btn = document.getElementById('btn')

btn.onclick = function(){

? ? let worker = new Worker('worker.js')

? ? worker.onmessage = function (event) {// 接收消息監(jiān)聽

? ? ? ? console.log('主線程接收分線程返回的數(shù)據(jù)', event.data)

? ? }

? ? worker.postMessage(1000) // 主線程向分線程發(fā)送數(shù)據(jù)

}

分線程worker.js代碼:

function fibonacci(n) {

? ? return n <= 2 ? 1 : fibonacci(n -1) + fibonacci(n -2)

}

let onmessage = function(event) {

? ? let num =event.data

? ? let result = fibonacci(num)

? ? postMessage(result)

}

事件機制如圖所示:

web worker
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、概述 JavaScript 語言采用的是單線程模型,也就是說,所有任務(wù)只能在一個線程上完成,一次只能做一件事。...
    零星小雨_c84a閱讀 2,573評論 0 2
  • 前言 在這里給大家一個好東西server,創(chuàng)建Http服務(wù)器。想必大家一定用過windows 的iis,mac的 ...
    沐雨芝錄閱讀 1,302評論 0 5
  • 作者:阮一峰www.ruanyifeng.com/blog/2018/07/web-worker.html 概述 ...
    grain先森閱讀 1,158評論 0 1
  • 介紹web worker HTML5提供得,運行在后臺的 JavaScript,獨立于其他腳本,不會影響頁面的性能...
    帶刀打天下閱讀 1,446評論 0 3
  • 姓名:趙麗萍 公司:寧波大發(fā)化纖有限公司 組別:第264期努力二組 【日精進打卡第135天】 【知~學(xué)習(xí)】 《六項...
    zhaoliping閱讀 91評論 0 0

友情鏈接更多精彩內(nèi)容