Вы можете использовать Promise.all
, чтобы дождаться выполнения одного или нескольких обещаний. Он возвращает одно обещание, которое «оборачивает» все другие обещания, которые разрешатся после разрешения всех обещаний, или сразу же отклоняется, если одно из обещаний отклонено.
Если вы хотите подождать для всех обещаний до конца sh, даже если некоторые из них отклонены, используйте Promise.allSettled
useEffect(() => {
async function createSalesOrder () {
const res = await axios.post('http://localhost:5000/')
console.log(res)
setValue([...value, res.data])
return (res)
}
if (isLoading) {
const finished = _ => setLoading(false);
// Wait for all of the sales orders to finish
Promise.all(
// Create an array of 100 promises:
// Quickly create an array with 100 entries
[...Array(100).keys()].map(
// For each entry, submit a request to create a sales order
// and return a promise
createSalesOrder
)
).then(
// When all of the promises have resolved, end your animation:
finished,
// Make sure you stop the animation even if an error occurred:
finished
);
}
}, [isLoading])
Также имейте в виду, что обещания будут выполнены / отклонены в каком бы порядке они не возвращались с сервера, не обязательно в том порядке, в котором они были отправлены. Это означает, что вполне возможно, что первый созданный вами порядок будет разрешен где-то посередине, что последний созданный вами порядок будет решен первым, и т. Д. c., И что если вы повторите логи c, порядок их разрешения будет отличаться каждый раз.