#reactjs #asynchronous #use-effect
Вопрос:
У меня есть следующая функция, которая вызывает api
useEffect(() => {
loadMarkets();
}, []);
async function loadMarkets() {
const marketInformation = await frService.getMarketInfo();
addMarketInfo(marketInformation.response.data);
}
Я хочу сделать аналогичный звонок loadBooks()
. Если я не возражаю, какой метод будет первым, смогу ли я просто вызвать его, как показано ниже, или мне следует обернуть это в 1 асинхронную функцию/завернуть в обещание?
useEffect(() => {
loadMarkets();
loadBooks();
}, []);
async function loadMarkets() {
const marketInformation = await frService.getMarketInfo();
addMarketInfo(marketInformation.response.data);
}
async function loadBooks() {
....
Ответ №1:
loadMarkets();
loadBooks();
поскольку эти функции имеют префикс async
ключевого слова, они являются обещаниями. Загрузочные книги будут запущены до завершения загрузки.
простой ответ, да, вы можете сделать так, как вы написали, однако я бы попытался поймать ошибки с помощью чего-то вроде
loadMarkets().уловить(досомет, если это ошибка)
где doSomethingIfThereIsAnError
будет функция, которая выполняет som…
Ответ №2:
На самом деле не имеет значения, что будет первым, так как они async
оба . Во время первоначального рендеринга вашего компонента useEffect
будут вызываться обе async
функции. Если вам нужно проверить, какая конечная точка api вызывается первой и сколько времени требуется для выполнения, вы можете открыть инструменты разработки браузера и проверить вкладку сеть.