所以我在技術面試中被問到這個問題: #NodeJs,#Javascript 假設我們有兩個必須并行運行的天氣 API。
- 條件1:產生結果的最快的應該作為回應發送。
- 條件2:如果一個失敗而另一個成功,則應發送成功的結果作為回應。
很長時間以來,我一直無法找到解決方案。
那么我應該如何在他們兩個之間進行選擇呢?
uj5u.com熱心網友回復:
您正在尋找的是Promise.any因為它回傳一個單一的承諾,一旦可迭代中的任何承諾履行,該承諾就會履行。
Promise.race將回傳第一個已解決的承諾,無論它成功還是失敗。
例如
let rejected_promise = new Promise((resolve, reject) => {
reject("Rejected Promise.....");
});
let first_resolved_promise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Resolved after 1 second");
}, 1000);
});
let second_resolved_promise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Resolved after 2 seconds");
}, 2000);
});
let result_1 = Promise.any([
rejected_promise,
first_resolved_promise,
second_resolved_promise,
]);
result_1.then((data) => console.log("Any's data: " data)).catch(e => console.log(e));
let result_2 = Promise.race([
rejected_promise,
first_resolved_promise,
second_resolved_promise,
]);
result_2.then((data) => console.log("Race's data: " data)).catch(e => console.log(e));
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/518333.html
