簡體   English   中英

關於使用 Axios 發送多個請求的查詢 - React

[英]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.

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