[英]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');
}
如果event1
在event2
之前發生,是否保證event1
的處理程序會在 event2 的處理程序之前從其event2
?
如果行為依賴於實現,我對 node.js v12 及更高版本的行為特別好奇。
是的,這是有保證的。 Promise 處理程序( then
是回調)按照它們在 promise(.then .then()
調用)上的安裝順序運行。 這轉化為相同的await
語法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.