前言
在君山等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計(jì)、網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作按需定制制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),成都全網(wǎng)營(yíng)銷推廣,外貿(mào)網(wǎng)站建設(shè),君山網(wǎng)站建設(shè)費(fèi)用合理。
我們知道js是單線程的,在有時(shí)候需要處理一些密集計(jì)算或者是高延遲的時(shí)候,總會(huì)出現(xiàn)不便。而且,現(xiàn)在的cpu都是多核的,單線程也無(wú)法充分發(fā)揮電腦的計(jì)算能力。正是基于這種情況,才有了worker的誕生。由于微信小程序官方的教程比較看不懂...所以本篇主要介紹一下worker在小程序中的用法。
worker的一些說(shuō)明
本篇主要是在小程序中使用worker,因?yàn)檎f(shuō)明部分也是和小程序相關(guān)。
1、主線程和worker線程之間是通過(guò)消息來(lái)通信的,主線程不能直接調(diào)用worker線程中的函數(shù)
2、worker線程中不能使用使用wx系列的api。
步驟說(shuō)明
小程序中,worker用法主要分為3步(按我個(gè)人的劃分),分別是:配置、主線程中創(chuàng)建調(diào)用和銷毀、worker線程中實(shí)現(xiàn)。
步驟一:配置
在app.json中配置worker目錄,如下圖(具體需要自己一一對(duì)應(yīng)目錄)
步驟二:主線程中創(chuàng)建調(diào)用和銷毀
這一步需要注意的就是,創(chuàng)建時(shí)填寫(xiě)的是絕對(duì)路徑,其他基本沒(méi)什么問(wèn)題。例如以下代碼,我們創(chuàng)建了worker線程,并向其發(fā)送了1個(gè)對(duì)象,對(duì)象中x=10和y=2。然后在接收到worker線程的消息時(shí),打印出來(lái)。
// welcome.js onLoad: function (options) { const worker = wx.createWorker('/worker/myworker.js'); worker.postMessage({ x : 10, y : 2 }); worker.onMessage(function(res){ console.log('這是主線程打印的') console.log(res) }); },
worker線程中實(shí)現(xiàn)
worker中其實(shí)是默認(rèn)注入了一個(gè)叫worker的對(duì)象,直接調(diào)用監(jiān)聽(tīng)消息和發(fā)送消息即可。如以下代碼:
// myworker.js worker.onMessage(function(res){ console.log('這是worker內(nèi)部線程打印的') console.log(res) let sum = add(res.x,res.y); worker.postMessage({ sum : sum }) }); function add(x,y){ return x+y; }
打印代碼如下圖:
小結(jié)
worker使用方法就是這樣了,一般來(lái)說(shuō)密集計(jì)算和高延遲的代碼片段我們會(huì)放入其中,其他的話在主線程直接執(zhí)行就好了。
好的,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)創(chuàng)新互聯(lián)的支持。