微信小程序如何使用多線程
不少從事開發(fā)崗的技術(shù)人員都了解過多線程問題,多線程是指從軟件或者硬件上實(shí)現(xiàn)多個(gè)線程并發(fā)執(zhí)行的技術(shù)。具有多線程能力的計(jì)算機(jī)因有硬件支持而能夠在同一時(shí)間執(zhí)行多于一個(gè)線程,進(jìn)而提升整體處理性能。在小程序中也可能有線程并發(fā)執(zhí)行的階段,這時(shí)候worker可以處理小程序開發(fā)的多線程機(jī)制。
微信小程序的一些異步處理任務(wù)可放置worker中運(yùn)行,原理是調(diào)用worker執(zhí)行多條并行線程,待結(jié)果返回到小程序的主線程。當(dāng)使用worker時(shí),主線程數(shù)據(jù)被復(fù)制并通過 Worker.Message()來傳輸,其中 Worker.postMessage()是發(fā)送數(shù)據(jù)函數(shù),Worker.onMessage()則是接收。
使用worker首先要配置worker信息,在app.js中聲明worker放置目錄,目錄下的代碼將被打包成一個(gè)文件:
{
workers: workers
}
接著在worker中添加文件,添加一個(gè)請求文件夾request和一個(gè)相應(yīng)文件夾response。
workers/request/index.js
workers/request/utils.js
workers/response/index.js
添加后,目錄結(jié)構(gòu)如下:
├── app.js
├── app.json
├── project.config.json
└── workers
├── request
│ ├── index.js
│ └── utils.js
└── response
└── index.js
下一步編寫 Worker 代碼
在workers/request/index.js編寫 Worker 響應(yīng)代碼
var utils = require(\'./utils\')
// 在 Worker 線程執(zhí)行上下文會(huì)全局創(chuàng)建一個(gè) `worker` 對象,直接調(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
的入口文件路徑,絕對路徑
最后主線程向Worker發(fā)出數(shù)據(jù)接收請求
worker.postMessage({
msg: \'hello worker\'
})
使用worker注意事項(xiàng):
Workers 之間不支持發(fā)送消息。
Worker 的入??谖募?wx.createWorker() 時(shí)指定,開發(fā)者可動(dòng)態(tài)指定 Worker 入口文件
Worker 內(nèi)代碼只能 require 指定 Worker 路徑內(nèi)的文件,無法引用其它路徑。
Worker 最大并發(fā)數(shù)量限制為 1 個(gè),創(chuàng)建下一個(gè)前請用 Worker.terminate() 結(jié)束當(dāng)前 Worker。
Worker 內(nèi)不支持 wx 系列的 API。
6微信小程序如何使用延時(shí)
延時(shí)執(zhí)行:
[javascript] view plain copy
setTimeout(function () {
//要延時(shí)執(zhí)行的代碼
}, 1000) //延遲時(shí)間 這里是1秒
HiShop小程序工具提供多類型商城/門店小程序制作,可視化編輯 1秒生成5步上線。通過拖拽、拼接模塊布局小程序商城頁面,所看即所得,只需要美工就能做出精美商城。更多小程序商店請查看:小程序商店