商城系統(tǒng) 注冊(cè)

微信小程序開(kāi)發(fā)多線程處理機(jī)制worker

2020-09-27|HiShop
導(dǎo)讀:摘要:在小程序中有線程并發(fā)執(zhí)行的階段,這時(shí)候worker可以處理小程序開(kāi)發(fā)的多線程機(jī)制。 不少?gòu)氖麻_(kāi)發(fā)崗的技術(shù)人員都了解過(guò)多線程問(wèn)題,多線程是指從軟件或者硬件上實(shí)現(xiàn)多個(gè)線程...
摘要:在微信小程序中有線程并發(fā)執(zhí)行的階段,這時(shí)候worker可以處理開(kāi)發(fā)小程序的多線程機(jī)制。
 

不少?gòu)氖麓罱◢彽募夹g(shù)人員都了解過(guò)多線程問(wèn)題,多線程是指從系統(tǒng)或者硬件上實(shí)現(xiàn)多個(gè)線程并發(fā)執(zhí)行的技術(shù)。具有多線程能力的計(jì)算機(jī)因有硬件支持而能夠在同一時(shí)間執(zhí)行多于一個(gè)線程,進(jìn)而提升整體處理性能。在微信小程序中也可能有線程并發(fā)執(zhí)行的階段,這時(shí)候worker可以處理開(kāi)發(fā)小程序的多線程機(jī)制。

微信小程序的一些異步處理任務(wù)可放置worker中運(yùn)行,原理是調(diào)用worker執(zhí)行多條并行線程,待結(jié)果返回到微信小程序的主線程。當(dāng)操作worker時(shí),主線程數(shù)據(jù)被復(fù)制并通過(guò) Worker.Message()來(lái)傳輸,其中 Worker.postMessage()是發(fā)送數(shù)據(jù)函數(shù),Worker.onMessage()則是接收。

 

操作worker首先要配置worker信息,在app.js中聲明worker放置目錄,目錄下的代碼將被打包成一個(gè)文件:

{

workers: workers

}

接著在worker中添加文件,添加一個(gè)請(qǐng)求文件夾request和一個(gè)相應(yīng)文件夾response。

workers/request/index.js

workers/request/utils.js

workers/response/index.js

微信小程序開(kāi)發(fā)多線程處理機(jī)制worker

添加后,目錄結(jié)構(gòu)如下:

├── app.js

├── app.json

├── project.config.json

└── workers

├── request

│   ├── index.js

│   └── utils.js

└── response

└── index.js

下一步編寫(xiě) Worker 代碼

在workers/request/index.js編寫(xiě) Worker 響應(yīng)代碼

var utils = require(\'./utils\')

// 在 Worker 線程執(zhí)行上下文會(huì)全局設(shè)立一個(gè) `worker` 對(duì)象,直接調(diào)用

worker.onMeesage/postMessage 即可

worker.onMessage(function (res) {

console.log(res)

})

接著在主線程中初始化Worker

在主線程的代碼 app.js 中聲明 Worker

var worker = wx.createWorker(\'workers/request/index.js\') // 文件名指定 worker

的入口文件路徑,絕對(duì)路徑

最后主線程向Worker發(fā)出數(shù)據(jù)接收請(qǐng)求

worker.postMessage({

msg: \'hello worker\'

})

操作worker注意事項(xiàng):

Workers 之間不支持發(fā)送消息。

Worker 的入??谖募?wx.createWorker() 時(shí)指定,搭建者可動(dòng)態(tài)指定 Worker 入口文件

Worker 內(nèi)代碼只能 require 指定 Worker 路徑內(nèi)的文件,無(wú)法引用其它路徑。

Worker 最大并發(fā)數(shù)量束縛為 1 個(gè),設(shè)立下一個(gè)前請(qǐng)用 Worker.terminate() 結(jié)束當(dāng)前 Worker。

Worker 內(nèi)不支持 wx 系列的 API。

 

推薦閱讀:微信小程序前端搭建群功能教材    微信小程序搭建教材


電話咨詢 預(yù)約演示 0元開(kāi)店