Я думаю, что знаю ответ на вопрос, но я не нашел никакой документации по нему, поэтому хочу быть уверен, что я ничего не пропускаю.
const prom1 = axios.get('/user/1').then(res => {
/* do stuff with response */
return res;
});
const prom2 = axios.get('/user/2').then(res => {
/* do stuff with response */
return res;
});
Promise.all([prom1, prom2]).then(() => setLoading(false));
В примеревыше, .then
из Promise.all()
кажется всегда выполненным после axios.get().then()
. Но действительно ли prom1
разрешается только после выполнения .then()
axios?
Мое понимание / догадка:
axios.get('/user/1').then(...);
/* THOSE TWO ARE THE SAME */
const prom = axios.get('/user/1');
prom.then(...);
Причина, по которой .then()
из Promise.all()
всегда будет выполняться после axios.get().then()
, заключается в том, что они выполняютсясинхронный и, следовательно, имеет значение, какой .then()
вызывается первым?
Я знаю, что в качестве альтернативы всегда могу сделать:
const prom1 = axios.get('/user/1').then(res => res);
const prom2 = axios.get('/user/2').then(res => res);
Promise.all([prom1, prom2]).then(() => {
prom1.then(...);
prom2.then(...);
setLoading(false);
});
Но это сработает только после того, как все обещания будут выполненыи если в ...
-блоках есть какие-то вычислительные , я не хочу начинать выполнять их после того, как на все API-запросы будут получены ответы.