久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術(shù)文章
文章詳情頁

javascript - promise和setTimeout執(zhí)行順序的疑惑

瀏覽:117日期:2023-05-15 09:32:56

問題描述

setTimeout(function () { console.log(1)}, 0);new Promise(function executor(resolve) {resolve();}).then(function () { console.log(2);});

如上代碼,為什么運(yùn)行結(jié)果是2,1而不是1,2?不是setTimeout先加入任務(wù)隊列嗎?

問題解答

回答1:

從規(guī)范上來講,setTimeout有一個4ms的最短時間,也就是說不管你設(shè)定多少,反正最少都要間隔4ms才運(yùn)行里面的回調(diào)(當(dāng)然,瀏覽器有沒有遵守這個規(guī)范是另外一回事兒)。而Promise的異步?jīng)]有這個問題。

從具體實(shí)現(xiàn)上來說,這倆的異步隊列不一樣,Promise所在的那個異步隊列優(yōu)先級要高一些。具體的你可以看這篇文章:從Promise來看JavaScript中的Event Loop、Tasks和Microtasks

回答2:

Promise的任務(wù)會在當(dāng)前事件循環(huán)末尾中執(zhí)行,而setTimeout中的任務(wù)是在下一次事件循環(huán)執(zhí)行

回答3:

javascript - promise和setTimeout執(zhí)行順序的疑惑

建議你去看下,<<你不知道的js(中卷)>>中1.5節(jié)左右的內(nèi)容,就理解了~我之前就是看了這個理解的。

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 三河市| 灵丘县| 大荔县| 新乐市| 赞皇县| 呼图壁县| 肇源县| 林西县| 内丘县| 淮北市| 奈曼旗| 毕节市| 平原县| 彰化县| 盐边县| 沂源县| 岫岩| 榆社县| 通海县| 林甸县| 赣州市| 腾冲县| 清水县| 巴林左旗| 合川市| 焉耆| 闽侯县| 潜山县| 九江市| 黄梅县| 内江市| 漳平市| 海阳市| 锡林浩特市| 铜山县| 巧家县| 上思县| 林甸县| 永善县| 武冈市| 巴林右旗|