<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        分析JS單線程異步io回調的特性

        來源:懂視網 責編:小采 時間:2020-11-27 22:24:38
        文檔

        分析JS單線程異步io回調的特性

        分析JS單線程異步io回調的特性:我們最開始接觸javascript應該大部分是從html中的js腳本開始,但是這種看似簡單的語言稀里糊涂的用了好幾年,也沒有搞清楚它的一些原理機制,有沒有躺槍! 起碼javascript在操作dom的時候用了各種事件回調,比如按鈕,鏈接的點擊,鼠標經過,獲取焦點等等. 在這個
        推薦度:
        導讀分析JS單線程異步io回調的特性:我們最開始接觸javascript應該大部分是從html中的js腳本開始,但是這種看似簡單的語言稀里糊涂的用了好幾年,也沒有搞清楚它的一些原理機制,有沒有躺槍! 起碼javascript在操作dom的時候用了各種事件回調,比如按鈕,鏈接的點擊,鼠標經過,獲取焦點等等. 在這個

        我們最開始接觸javascript應該大部分是從html中的js腳本開始,但是這種看似簡單的語言稀里糊涂的用了好幾年,也沒有搞清楚它的一些原理機制,有沒有躺槍!

        起碼javascript在操作dom的時候用了各種事件回調,比如按鈕,鏈接的點擊,鼠標經過,獲取焦點等等.

        在這個過程中,我們在dom上綁定一個事件回調函數 比如 onclick="doCheck()" 這個過程就是給dom元素注冊了一個click 事件,并且綁定了一個事件回調函數 doCheck().

        當鼠標點擊這個元素的時候,觸發了事件,馬上執行事件綁定函數并回.

        再后來是接觸到jquery 的時候,大量的

        $("#id").click(function(){
        alert('點擊事件');
        });

        這種jquery的語法寫的越來越多似乎已經習慣了,但是你是都留意過前面的選擇器只是選擇過濾dom節點,接著的click就是一個事件注冊,而里面的 function(){} 其實是一個參數,事件綁定函數的參數,這里面就要求你熟悉javascript的語法了.

        function在javascript中是一個對象,對象就可以指世界的萬事萬物,所以對象可以包含很多屬性,方法等.

        既然是對象,那就可以當做一個參數去傳遞,這種函數叫做 高階函數.

        而且這種函數沒有定義名稱對不對,當然你可以一個名稱,然后把名稱傳過來也是一樣的,但是沒有意義,因為這里的函數對象其實是一個形參,所以我們習慣的不給這種函數起名字,這就是常說的匿名函數.

        接著上面的$("#id").click 說起,當點擊事件被觸發時,就要執行事件綁定函數.和上面直接在dom上給定onclick方法是一樣的效果.

        假設瀏覽器里有多個線程去操作腳本的話,你能想象到他的亂嗎? 線程一正要去修改元素A的value值,結果沒想到線程二已經把元素A從dom樹刪除節點,這時線程一只好操作失敗報錯.這樣的情況是不糟透了,要么瀏覽器無維護多個線程數據的一致性,要么前端工程師自己去維護,所以......瀏覽器只有一個線程去操作dom,這樣省去了很多不必要的麻煩.

        setTimeout(function(){
        alert('彈出');
        },300);
        
        while(true){
        	........
        }

        你覺得 300毫秒后 alert('彈出') 還有戲嗎?

        沒有了,永遠沒有戲了,等待300毫秒只是騙取你的感情的.因為瀏覽器是單線程模式執行腳本.

        一旦線程處于死循環模式下去執行 while 語句,你的setTimeout 再也不會起任何作用了.

        進而我們走入了 node.js 世界,它完全保留了javascript在瀏覽器的特性,單線程異步回調,也正是因為這個特點它才是它,假如node.js 是一門同步語言,就算所有的npm包都是 c++ 擴展的(速度夠快吧)再快你也比不過c語言處理速度是不是,那么node.js可能還沒有出世就已經被php鄙視了.

        正是因為它的異步回調IO,更能提高他的效率,讓我想起以前學校的一種快餐店和學校食堂的對比情況:

        食堂是所有學生拿著盤子在窗口排成一字型隊,打飯的妹妹一個一個盛好了,挨個端上飯走了.這是同步處理結果.

        學校快餐店也是學生排隊點餐,但是點完餐拿上你的呼叫器就可以離開找位置去了.這樣單位時間內服務員可以為很多人提供服務,而且點好餐的同學可以找位置做自己其他事情,而不用傻傻地站到窗口等飯,直到你的飯出來的那一剎那,服務器會根據單號按下編碼,這時你桌上的呼叫器會響起,你去取餐就好了.這是異步處理.那個呼叫器響起就是觸發事件.

        單線程可以減少多線程之間狀態切換引起的資源浪費和維護困難,當然也有專門的第三方包來支持多核多線程的情景,你可以自己權衡.

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        分析JS單線程異步io回調的特性

        分析JS單線程異步io回調的特性:我們最開始接觸javascript應該大部分是從html中的js腳本開始,但是這種看似簡單的語言稀里糊涂的用了好幾年,也沒有搞清楚它的一些原理機制,有沒有躺槍! 起碼javascript在操作dom的時候用了各種事件回調,比如按鈕,鏈接的點擊,鼠標經過,獲取焦點等等. 在這個
        推薦度:
        標簽: js 回調 分析
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲国产精品无码久久久蜜芽| 九九九精品成人免费视频| www国产亚洲精品久久久日本| 亚洲精品无码av片| 成全视频免费高清| 亚洲欧美精品午睡沙发| 在线视频免费观看www动漫| 在线观看日本亚洲一区| 中文字幕无码免费久久99| 亚洲 日韩 色 图网站| 无码人妻精品一二三区免费| 亚洲av成本人无码网站| 亚洲福利在线播放| 国产精品玖玖美女张开腿让男人桶爽免费看| 亚洲AV成人潮喷综合网| 国产三级在线免费观看| 久久水蜜桃亚洲av无码精品麻豆| 1000部羞羞禁止免费观看视频| 精品亚洲AV无码一区二区| 四虎在线视频免费观看| 一级毛片a免费播放王色电影| 亚洲男同帅GAY片在线观看| 精品熟女少妇av免费久久| 国产精品亚洲综合五月天| 免费人成视频在线观看不卡| 国产无遮挡又黄又爽免费网站| 亚洲黄色在线观看网站| 成人毛片免费在线观看| a一级爱做片免费| 久久久久亚洲精品日久生情| 好爽…又高潮了免费毛片| 国产精品免费视频观看拍拍 | 最近中文字幕国语免费完整 | 亚洲国产日韩综合久久精品| 日韩精品成人亚洲专区| 国产无遮挡裸体免费视频在线观看| 亚洲综合激情六月婷婷在线观看 | 国产精品国产午夜免费福利看 | 亚洲精品V天堂中文字幕| 亚洲乱亚洲乱少妇无码| 午夜理伦剧场免费|