[英]A query on sending multiple requests using Axios - React
有一種情況,我需要使用 Axios 一次調用多個服務,我需要考慮成功 API 調用的值並忽略失敗的 API 調用。 例如,請看下面的案例:
let URL1 = "https://www.something.com"
let URL2 = "https://www.something1.com"
let URL3 = "https://www.something2.com"
const promise1 = axios.get(URL1); // SUCCESS
const promise2 = axios.get(URL2); // SAY THIS SERVICE CALL WAS FAILED SENDING 404 ERROR
const promise3 = axios.get(URL3); // SUCCESS
Promise.all([promise1, promise2, promise3]).then(function(values) {
console.log(values);
}).catch((e)=>{ console.log("error",e)});
假設服務 2 失敗,而服務 1 和 3 成功,在這種情況下 promise 鏈被破壞並拋出錯誤。 在[response_1, null, response_3]
這樣的情況下,我需要 output。 你能指導我如何實現這一目標嗎? 提前致謝。
我的猜測是您應該通過在catch上返回Promise.resolve()
來手動實現它。
let URL1 = "https://www.something.com"
let URL2 = "https://www.something1.com"
let URL3 = "https://www.something2.com"
const promise1 = axios.get(URL1).catch(() => Promise.resolve()); // SUCCESS
const promise2 = axios.get(URL2).catch(() => Promise.resolve()); // SAY THIS SERVICE CALL WAS FAILED SENDING 404 ERROR
const promise3 = axios.get(URL3).catch(() => Promise.resolve()); // SUCCESS
Promise.all([promise1, promise2, promise3]).then(function(values) {
console.log(values);
}).catch((e)=>{ console.log("error",e)});
這樣,如果 axios 請求失敗,它將首先進入 axios.catch然后返回成功,並返回您需要的任何值。
您可以在MDN 上使用 Promises 鏈接找到有關Promise 鏈接的更多信息(例如在 catch 之后鏈接)。
Promise.all()
將看不到任何捕獲,因此請記住,這些請求將不再能夠在Promise.all
上失敗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.