国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

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

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

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

問(wèn)題描述

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ù)隊(duì)列嗎?

問(wèn)題解答

回答1:

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

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

回答2:

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

回答3:

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

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

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 虞城县| 尉氏县| 翼城县| 济南市| 迁西县| 右玉县| 拉萨市| 新郑市| 福鼎市| 义马市| 固阳县| 红河县| 黄骅市| 阳新县| 沂源县| 托里县| 涿鹿县| 建昌县| 南澳县| 济南市| 延吉市| 望城县| 澄迈县| 剑川县| 安岳县| 阿勒泰市| 上饶县| 黄浦区| 饶阳县| 台山市| 弋阳县| 荣昌县| 东阿县| 乡城县| 阿拉尔市| 商水县| 阆中市| 临西县| 甘孜| 监利县| 石狮市|