Javascript單線程實現

來源:互聯網
上載者:User

標籤:com   info   inter   提醒   console   color   gpo   spry   timeout   

對於Javascript的單線程實現一直一知半解的。開始以為很難,但是仔細看一下感覺還好。

首先明白一點,js是單線程的,也就是說js只能在同一時刻處理一段代碼。但是js啟動並執行環境瀏覽器卻是可以多線程的,它具有多個線程,js代碼處理引擎線程、事件觸發線程、http請求線程、計時器觸發線程。多者輔助,實現了js的非同步處理。

準確的來說。這個實際上就是說,js引擎線程就是主程式。一旦碰上相應的例如計時器產生了,就先將這個定時器內部的代碼先掛起,等到需要執行的時間到了,讓計時器的線程提醒js該執行剛剛的代碼了。js這樣就達到了偽非同步。

setTimeout(function(){    console.log(‘settime‘);}, 0);console.log(‘now‘);

例如以上輸出的就實現輸出now,然後輸出settime。

這個是讓我覺得最清楚的一個圖了。藍色整體代表著js引擎中要執行的代碼部分。藍色javascript的塊是現在要執行的代碼部分當我們想要出發interval或者點擊事件等得時候事情都需要往後排。直到當前執行結束之後再進行處理後面的得代碼。但是settimeout和setinterval還有一些區別,settimeout如果產生了,就將事情放到等待處理的序列中,但是settimeout每次毀掉觸發的時候只會保留第一次需要執行的代碼部分,如果第二次需要觸發的時候,其中js引擎有使用的時候,就會將這一次回調觸發拋棄。直到js部分閑下來了,就會立刻執行。

 

詳細標準:

http://www.cnblogs.com/sprying/archive/2013/05/26/3100639.html

Javascript單線程實現

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.