簡體   English   中英

一個 promise 上的多個等待的分辨率順序

[英]Order of resolution for multiple awaits on one promise

如果多個任務在單個 promise 上等待,是否有標准順序保證/指定,一旦 promise 得到解決,這些任務將開始執行? 例如,考慮以下

var promise = null;
function setPromiseIfNeeded() {
  if (!promise) {
    promise = new Promise(resolve => setTimeout(resolve, 100));
  }
}
client.on('event1', event => {
  setPromiseIfNeeded();
  await promise;
  console.log('event 1 done awaiting');
}
client.on('event2', event => {
  setPromiseIfNeeded();
  await promise;
  console.log('event 2 done awaiting');
}

如果event1event2之前發生,是否保證event1的處理程序會在 event2 的處理程序之前從其event2

如果行為依賴於實現,我對 node.js v12 及更高版本的行為特別好奇。

是的,這是有保證的。 Promise 處理程序( then是回調)按照它們在 promise(.then .then()調用)上的安裝順序運行。 這轉化為相同的await語法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM