日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

对eventloop的研究

發布時間:2023/12/9 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对eventloop的研究 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

javasctipt是一門單線程的非阻塞的腳本語言,單線程意味著,JavaScript

單線程意味著,javascript代碼在執行的任何時候,都只有一個主線程來處理所有的任務。

JavaScript的事件分兩種,宏任務(macro-task)微任務(micro-task)

宏任務:包括整體代碼script,setTimeout,setInterval

微任務:Promise.then(非new Promise),process.nextTick(node中)

  • 事件的執行順序,是先執行宏任務,然后執行微任務,這個是基礎,任務可以有同步任務和異步任務,同步的進入主線程,異步的進入Event Table并注冊函數,異步事件完成后,會將回調函數放入Event Queue中(宏任務和微任務是不同的Event Queue),同步任務執行完成后,會從Event Queue中讀取事件放入主線程執行,回調函數中可能還會包含不同的任務,因此會循環執行上述操作。

舉個例子

? ??setTimeout(

function()

{

console.log('setTimeout');

},1000)

new Promise(function(resolve)

{ console.log('promise');

}).then(

function() {

console.log('then');

})

console.log('console');

//2,4,3,1.

  • 先執行script同步代碼

    先執行new Promise中的console.log(2),then后面的不執行屬于微任務 然后執行console.log(4)
  • 執行完script宏任務后,執行微任務,console.log(3),沒有其他微任務了。
  • 執行另一個宏任務,定時器,console.log(1)。




?

轉載于:https://www.cnblogs.com/zhouyideboke/p/10255955.html

總結

以上是生活随笔為你收集整理的对eventloop的研究的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。