昨天,一位面試官問我這個問題“你如何在 JS/NodeJS 中優先考慮承諾?”。我就像你可以使用類似 await 或 promise.resolve() 的東西,但他說那不是優先考慮。誰能解釋一下?
uj5u.com熱心網友回復:
因此,一種可能的方法是使用 setImmediate 和 process.nextTick()
https://jinoantony.com/blog/setimmediate-vs-process-nexttick-in-nodejs/
setImmediate() 和 process.nextTick() 是兩個函式,它們允許我們控制事件回圈中代碼的執行順序。這兩個函式都在事件佇列中安排我們的回呼處理程式。但它們在事件回圈的不同階段執行。
uj5u.com熱心網友回復:
也許他的意思是在一個承諾池中,優先級可能是單獨解決該池中的第一個,你可以通過使用 Promise.race ( https://developer.mozilla.org/en-US /docs/Web/JavaScript/Reference/Global_Objects/Promise/race)
uj5u.com熱心網友回復:
您可以通過這種方式進行承諾鏈接,以確保獨立的承諾以給定的順序一個接一個地運行:
function later(delay) {
return new Promise(function(resolve) {
setTimeout(resolve(delay), delay);
});
}
//Promise 1:
let p1 = later(100)
//Promise 2:
let p2 = later(200)
//Promise 2:
let p3 = later(300)
p1.then(delay => (console.log(delay))).then(p2.then(delay => console.log(delay)).then(p3.then(delay => console.log(delay))));
//console:
//100
//200
//300
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/416557.html
標籤:
上一篇:常規函式呼叫
下一篇:`npxcreate-react-app`說它需要“節點14或更高版本”,但我運行的是17.4.0。我怎樣才能解決這個問題?
