W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
Worker是與主線程并行的獨(dú)立線程。創(chuàng)建Worker的線程被稱為宿主線程,Worker工作的線程被稱為Worker線程。創(chuàng)建Worker時傳入的腳本文件在Worker線程中執(zhí)行,通常在Worker線程中處理耗時的操作,需要注意的是,Worker中不能直接更新Page。
Worker的開發(fā)步驟如下:
在工程的模塊級build-profile.json5文件的buildOption屬性中添加配置信息。
- "buildOption": {
- "sourceOption": {
- "workers": [
- "./src/main/ets/workers/worker.ts"
- ]
- }
- }
根據(jù)build-profile.json5中的配置創(chuàng)建對應(yīng)的worker.ts文件。
- import worker from '@ohos.worker';
- let parent = worker.workerPort;
- // 處理來自主線程的消息
- parent.onmessage = function(message) {
- console.info("onmessage: " + message)
- // 發(fā)送消息到主線程
- parent.postMessage("message from worker thread.")
- }
主線程中使用如下方式初始化和使用worker。
Stage模型:
- import worker from '@ohos.worker';
- let wk = new worker.ThreadWorker("entry/ets/workers/worker.ts");
- // 發(fā)送消息到worker線程
- wk.postMessage("message from main thread.")
- // 處理來自worker線程的消息
- wk.onmessage = function(message) {
- console.info("message from worker: " + message)
- // 根據(jù)業(yè)務(wù)按需停止worker線程
- wk.terminate()
- }
FA模型:
- import worker from '@ohos.worker';
- let wk = new worker.ThreadWorker("../workers/worker.ts");
- // 發(fā)送消息到worker線程
- wk.postMessage("message from main thread.")
- // 處理來自worker線程的消息
- wk.onmessage = function(message) {
- console.info("message from worker: " + message)
- // 根據(jù)業(yè)務(wù)按需停止worker線程
- wk.terminate()
- }
說明:
build-profile.json5中配置的worker.ts的相對路徑都為./src/main/ets/workers/worker.ts時,在Stage模型下創(chuàng)建worker需要傳入路徑entry/ets/workers/worker.ts;在FA模型下創(chuàng)建worker需要傳入路徑../workers/worker.ts。
主線程與Worker線程間支持的數(shù)據(jù)類型參考序列化支持類型。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: