Promise的觸發器resolve為什麼不用setTimeout實現非同步?

時間 2021-05-30 04:19:16

1樓:

setTimeout, setInterval, setImmediate 屬於 macro-tasks

Promise, MutantObserver 屬於 micro-tasks

正常 task

同志你好,這是我的資料

好的,我現在處理。處理完了,請下一位

Promise

同志你好,這是我資料

你這資料這沒填對,你這樣,你填完後重新排到隊尾好吧,咱們別阻礙別人的業務

setTimeout

同志你好,這是我資料

你的證件帶了嗎?

哎!我忘家了,我現在回去拿!

哎 …,你回去拿哈,回來了重新叫號重新排隊

好的好的,不好意思同志

所以 Promise 的優先順序會高於 setTimeout。micro-tasks 列隊結束後會(通常)會觸發一次 update rendering。整個流程差不多是:

有沒有 macrotask 任務?有就來乙個

有沒有 microtask 任務?有就把這個列隊的任務全弄完

弄完了,需要更新檢視(update rendering)嗎?需要就更新

希望簡潔明瞭

2樓:

因為js的執行順序呀,

promise(){

幹點什麼,然後轉換狀態為執行成功或失敗

promise.then("列印promise成功","列印promise失敗")

settimeout(列印"我是settimeout")你看看哪個先列印出來

為什麼太空探測器的電池不用鈾而用鈽?

如果從提問者的角度,要說明的一點是 太空電池利用的是同位素衰變的能量,而不是聚變或裂變。在此基礎上,具體同位素的選擇可以看前面的回答 半衰期大約88年是優勢之一。另乙個優點是鈽238衰變的放射線主要是阿爾法放射線,相比於伽馬射線,阿爾法射線的穿透力最弱,因此很好遮蔽,遮蔽材料可以很薄,很輕,體積很小...

小公尺淨水器的pp棉為什麼不用1微公尺的?是考慮到出水量嗎?

宿雨花 首先,PP棉在濾芯裡面只是起到最基本的初級過濾,像一些大的泥沙,雜質,汙染物。市面上的PP棉主要分1微公尺,5微公尺,但是總體的差別不大。PP棉從材質上來看,目前大多數分為兩種。一種是普通的,是由聚酯纖維熔噴成型,其缺點來說,材質不夠均勻,透氣性比較差,相對使用壽命短。另一種是摺疊PP膜,是...

為什麼鄧布利多受到魂器傷害的那隻手不用乙個神鋒無影?

非遲 切手很簡單,斷肢重生也不是什麼難事。以老鄧的能力,要不是見到追尋了一生的東西突然激動,魂器很可能根本傷不到他。問題是魂器所造成的傷並不是表面上那麼簡單,手黑只是外在表現出來的而已。就像哈利的傷疤,並不是它長在頭上所以不能去除,而是因為某些咒語造成的傷害是永久的,甚至會留下後遺症。所以你把手砍了...