WebWork(在主線程建立子程序)

2021-09-05 10:12:18 字數 1134 閱讀 7051

webwork**

都知道js是單執行緒語言,最讓人頭疼的莫過於在網路正常的情況下經常出現頁面的假死,

以及在進行大量的for迴圈計算時會導致執行緒阻塞,由於要進行大量的計算js後面的執行會被阻隔在此處,使得效能較差,**維護性差等一系列的問題發生。

本人也看了很多關於webwork的demo和官方的講解,都說是官方很多都不是很容易讀懂,在最近幾天的學習過程我也針對這個做了些功課發現了webwork的作用非同一般!

let worker = new worker("work.js")//此處寫待處理的位址

let data = [1, 2, 3, 4, 5, 6, 7]

worker.postmessage(data);

worker.onmessage = function(event)

//此部分是work.js中

this.addeventlistener("message", (data) => )

function render(data) `

});return str

}

正如您所看到的,這就是乙個簡單的demo:

但是你在之後再補一句簡單的console.log(1)就能夠看出結果了,

開啟f12(傳說中的開發者模式)你會驚奇的發現單執行緒語言居然先輸出了1然後在ul中新增了節點,

照以前的寫法我們肯定會這樣做:

let str = "";

data.foreach(i => `

});document.queryselector("ul").innerhtml = str;

是不是發現了其中的好處?

簡單來說我們把一套本該同步的**該成了非同步,也就是在主線程中開闢了一條子執行緒,這樣的好處就是不會影響主線程,執行緒任務的執行,具體步驟在子執行緒中進行,最後返回結果給主線程中,很巧妙的解決了之前上文提到的,假如在主線程中我有個任務迴圈了10000次(當然是開玩笑!)這時webwork是不是很巧妙的處理了這個問題呢?

結尾:

為什麼要這麼做?

隨著web的發展,時代越來越講究優化二字,能夠用更加優雅的**,更加簡潔的**去完成任務是至關重要的。

在子執行緒中操作主線程

當android啟動activity時,會先啟動乙個主線程 也稱為ui執行緒 用於控制activity的當前view介面,在主線程控制的過程中,子執行緒是不能直接更新主線程資料的,但是android中提供了很多其他執行緒操作ui執行緒的方法 方法一 activity.runonuithread ru...

主線程 子執行緒死掉 主線程可以在子執行緒之前死掉

我相信主線程不能在子執行緒之前死亡。但是有什麼方法可以檢查嗎?我在下面寫了乙個簡單的程式。任何人都可以證明它實際上離開理論嗎?class childre extends thread public void run for int i 0 i 10 i system.out.println chil...

主線程和子執行緒

子執行緒通過 handlerthread的thread.getlooper 繫結,在主線程的handler的handlermessage中呼叫threadhandler.sendmessagedelay msg,1000 向子執行緒傳送訊息。在子執行緒中通過handler.sendmessagede...