Пакетные асинхронные запросы в JS - PullRequest
0 голосов
/ 21 апреля 2019

Я видел много ответов здесь в Stackoverflow, рекомендующих людям обрабатывать несколько асинхронных вызовов, используя Promise.all.Я действительно думаю, что Promise.all () помогает, когда выполняются вызовы для выполнения аналогичной работы, но у меня есть несколько проблем с этим подходом:

  1. Если для выполнения обещаний требуется другое время;
  2. Если вы можете начать выполнять работу с задачами по мере их поступления.Promise.all ожидает разрешения (или отклонения) Обещаний, чтобы начать выполнение обратного вызова.На мой взгляд, это главный аргумент в пользу этого подхода.

Есть ли другой подход?

Например, в React (с использованием хуков) мы можем сделать что-то вроде этого:

useEffect(() => {
  setValue1(await fetch(url1));
});

useEffect(() => {
  setValue2(await fetch(url2));
});

Но мне это не кажется правильным ... хотя, может быть, это "правильно".

В любом случае, моя причина опубликовать это - я был бы очень признателен за хорошее представление о том, как подходить к асинхронным вызовам, которые обрабатывают другую логику.

Спасибо.

1 Ответ

0 голосов
/ 21 апреля 2019

Вам нужно добавить асинхронность здесь

useEffect(async () => { setValue1(await fetch(url1));}); 

useEffect(async () => { setValue2(await fetch(url2));
});

тогда можно ждать извлечения

...