我有一個項的陣列。我正在對所有專案進行迭代,并提出一個帖子請求,以便用axios在資料庫中創建一條記錄。如果所有請求都成功了,我想顯示一條成功資訊。我不知道該怎么做?
我正在考慮創建一個陣列,并將true和false推送給它。如果陣列的值不包括false,那么所有的請求都成功了。
有什么建議嗎?
const handleAddTaskBacklogs=()=> {
setSubmitting(true)。
openSnackbar('Adding to task backlogs...' )。
try {
selectedBacklogs.forEach(async (backlog) => {
await createResource.mutateAsync({
url: taskBacklogsUrls.list(),
values: {
task: taskId,
積壓。
},
});
});
openSnackbar('Backlog(s) added to the task')。
refetchTaskBacklogs()。
setActiveBacklog(null)。
} catch (err) {
console.log(err.message)。
console.log(err.response && err.response.data) 。
openSnackbar('Failed to add backlog(s) to the task')。
} finally {
setSubmitting(false) 。
}
};
uj5u.com熱心網友回復:
你可以將selectedBacklogs映射到一個承諾陣列,并Promise.all它們。
Promise.all()方法接收一個承諾的迭代器作為輸入。 并回傳一個單一的Promise,該Promise可決議為一個陣列的結果 的結果的陣列。這個回傳的承諾將在所有 這個回傳的承諾將在所有輸入的承諾都被解決時,或者在輸入的可迭代檔案不包含 沒有承諾。當任何一個輸入的承諾被拒絕時,它將立即拒絕 拒絕或非承諾拋出一個錯誤,它將以這個 第一條拒絕資訊/錯誤。
const handleAddTaskBacklogs = async ( ) => {
setSubmitting(true)。
openSnackbar('Adding to task backlogs...' )。
try {
const promises = selectedBacklogs.map((backlog) => {
return createResource.mutateAsync({
url: taskBacklogsUrls.list()。
values: {
task: taskId,
積壓。
},
});
});
const result = await Promise.all(promises)。
//所有成功。
openSnackbar('Backlog(s) added to the task')。
refetchTaskBacklogs()。
setActiveBacklog(null)。
} catch (err) {
console.log(err.message)。
console.log(err.response && err.response.data) 。
openSnackbar('Failed to add backlog(s) to the task')。
} finally {
setSubmitting(false) 。
}
};
Promise.all將在第一次拒絕時立即拒絕。如果你仍然需要處理所有的異步POST請求,那么你可以使用Promise.allSettled。然后你可以檢查每個請求的status,看看哪些請求被成功滿足了。
const result = await Promise.allSettled(promises)。
const allFulfilled = result.every(({ status }) => status =='fulilled') 。
if (allFulfilled) {
//所有成功的。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/332397.html
標籤:
上一篇:檢索詞的重新運算
