国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

WebWork(在主線程創建子進程)

scq000 / 926人閱讀

摘要:淺談前言都知道是單線程語言,最讓人頭疼的莫過于在網絡正常的情況下經常出現頁面的假死,以及在進行大量的循環計算時會導致線程阻塞由于要進行大量的計算后面的運行會被阻隔在此處,使得性能較差,代碼維護性差等一系列的問題發生。

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) {
             console.log(event.data)
             document.querySelector("ul").innerHTML = event.data
         }
         
         //此部分是work.js中
         this.addEventListener("message", (data) => {
                let str = render(data.data)
                this.postMessage(str)
         })


    function render(data) {
            let str = ""
            data.forEach(i => {
                str += `
  • ${i}
  • ` }); return str }

    正如您所看到的,這就是一個簡單的Demo:

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

    打開F12(傳說中的開發者模式)你會驚奇的發現單線程語言居然先輸出了1然后在UL中添加了節點,

    思考?

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

    let str = "";
    data.forEach(i => {
                    str += `
  • ${i}
  • ` }); document.querySelector("ul").innerHTML = str;

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

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

    結尾:

    為什么要這么做?

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

    用戶需求一直是我們開發者比較密切關心的問題,試想一下如果在某一天有個用戶訪問了你的網站由于你代碼的到至了頁面的假死的現象的發生那是一件多么可怕的事情,在深層次的探究中,每一個優秀的前端工作者都應該去努力解決這些問題。

    作者寄語:劉某人,寫文章不多,不喜勿噴,只是發表個人見解,如果有更好的建議希望可以互相幫助,相互學習

    文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

    轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/116972.html

    相關文章

    • WebWork在主線程建子進程

      摘要:淺談前言都知道是單線程語言,最讓人頭疼的莫過于在網絡正常的情況下經常出現頁面的假死,以及在進行大量的循環計算時會導致線程阻塞由于要進行大量的計算后面的運行會被阻隔在此處,使得性能較差,代碼維護性差等一系列的問題發生。 WebWork淺談 前言: 都知道JS是單線程語言,最讓人頭疼的莫過于在網絡正常的情況下經常出現頁面的假死, 以及在進行大量的for循環計算時會導致線程阻塞,由于要進行...

      eccozhou 評論0 收藏0
    • WebWork在主線程建子進程

      摘要:淺談前言都知道是單線程語言,最讓人頭疼的莫過于在網絡正常的情況下經常出現頁面的假死,以及在進行大量的循環計算時會導致線程阻塞由于要進行大量的計算后面的運行會被阻隔在此處,使得性能較差,代碼維護性差等一系列的問題發生。 WebWork淺談 前言: 都知道JS是單線程語言,最讓人頭疼的莫過于在網絡正常的情況下經常出現頁面的假死, 以及在進行大量的for循環計算時會導致線程阻塞,由于要進行...

      wmui 評論0 收藏0
    • 深入淺出nodeJS - 4 - (玩轉進程、測試、產品化)

      摘要:進程間通信的目的是為了讓不同的進程能夠互相訪問資源,并進程協調工作。這個過程的示意圖如下端口共同監聽集群穩定之路進程事件自動重啟負載均衡狀態共享模塊工作原理事件二測試單元測試性能測試三產品化項目工程化部署流程性能日志監控報警穩定性異構共存 內容 9.玩轉進程10.測試11.產品化 一、玩轉進程 node的單線程只不過是js層面的單線程,是基于V8引擎的單線程,因為,V8的緣故,前后...

      henry14 評論0 收藏0
    • python學習筆記 - fork, multiprocessing

      摘要:近年來,人工智能的興起使得更加火爆了。獲取當前進程父進程的。但是唯一遺憾的是,函數只能在系統中使用,不能在系統中使用。因此在下,需要將其包含在中。則是立即返回一個可迭代對象。則是返回可迭代函數。 Python一直是一門對初學者非常友好的語言,在數據分析、Web 開發、網絡安全、網絡爬蟲等方面應用廣泛。近年來,人工智能的興起使得 Python 更加火爆了。 我們在處理大量數據或者需要快速...

      littleGrow 評論0 收藏0

    發表評論

    0條評論

    最新活動
    閱讀需要支付1元查看
    <