原文:前端 | JS 任務和微任務:promise 的回調和 setTimeout 的回調到底誰先執行?

首先提一個小問題:運行下面這段 JS 代碼后控制台的輸出是什么 可以先嘗試自己分析一下結果,然后再看答案: 怎么樣,你猜對了嗎 如果對這個輸出結果感到很迷惑,這篇文章或許可以幫到你。 PS:文中按照標准分析理論結果,但實際上各個瀏覽器對任務隊列的支持情況很混亂,所以如果你在瀏覽器執行代碼后發現結果不同也不必糾結 總體來說 Chrome 的支持比較好。 如果對 Promise 的用法還不熟悉,可以看 ...

2021-04-03 18:09 0 344 推薦指數:

查看詳情

任務任務setTimeoutPromise執行順序

先以一道面試題做引子: 寫出這段程序的輸出內容: 如果你看了這道題不知道怎么下手,或者發現結果和自己的答案大相徑庭,請繼續往下看 1. javascript事件循環首先,你要知道javascript是單線程語言。js任務需要排隊順序執行,如果一個任務耗時過長,后邊一個任務 ...

Thu May 09 23:48:00 CST 2019 0 1684
JS中的執行機制(setTimeout、setInterval、promise、宏任務任務

1、執行機制 JS 是單線程的,處理 JS 任務(程序)只能一個一個順序執行,所以 JS 中就把任務分為了同步任務和異步任務。同步的進入主線程先執行,異步的進入Event Table並注冊函數,當指定的事情完成時,Event Table會將這個函數移入事件隊列Event Queue,等待主線 ...

Fri Dec 13 00:53:00 CST 2019 0 292
js任務任務 promise

1.概念:宏任務(macrotask )和任務(microtask ) 表示異步任務的兩種分類。常見宏任務:I/O 、setTimeout、setInterval;任務Promise.then catch finally、process.nextTick 在掛起任務時,JS 引擎會將 所有 ...

Mon Jul 15 02:29:00 CST 2019 0 1993
setTimeoutPromise任務隊列

棧,是指只有在一端進行存取的表結構。可以看做一個打開的箱子,永遠只能對最上面的東西進行操作。也就是先進(棧底)后出(必須把上面的全都拿走),后進(棧頂)先出的順序。 隊列,是指排隊過安檢,先進先出。 在JS的單線程中,任務隊列可以有多個。這些隊列都是依靠函數調用棧來循環執行,這也就是我們常說 ...

Tue May 15 08:39:00 CST 2018 0 1039
詳解回調函數——以JS為例解讀異步、回調和EventLoop

回調,是非常基本的概念,尤其在現今NodeJS誕生與蓬勃發展中變得更加被人們重視。很多朋友學NodeJS,學很久一直摸不着門道,覺得最后在用Express寫Web程序,有這樣的感覺只能說明沒有學懂NodeJS,本質上說不理解回調,就不理解NodeJS。 NodeJS有三大核心 ...

Tue Jan 10 21:57:00 CST 2017 0 3217
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM