Обещания не запускают ничего, они просто наблюдают за работающими вещами. Так что дело не в том, что вы не хотите ссылаться на обещания, а в том, что вы не хотите начинать то, что они соблюдают. Когда вы вызываете axios
(или что-то еще), уже уже начал процесс, который возвращает обещание, которое он возвращает.
Если вы не хотите, чтобы этот процесс запускался, не вызывайте axios
(et c.). Например, вы можете вместо этого поместить функцию, которая вызывает ее в массив, а затем вызвать ее, когда вы будете готовы начать работу:
const arrayOfAxios = [
() => axios('https://api.github.com/') // *** A function we haven't called yet
];
setTimeout(() => {
console.log('before call promise');
Promise.all(arrayOfAxios.map(f => f())).then(res => {
// −−−−−−−−−−−−−−−−−−−−−−−−−−−−^^^^^^^^ *** Calling the function(s)
console.log({ res });
});
}, 5000);
Или если вы выполняете ту же операцию над во всех записях массива хранится информация, необходимая для этой операции (например, URL-адреса или объекты параметров для axios
):
const arrayOfAxios = [
'https://api.github.com/' // *** Just the information needed for the call
];
setTimeout(() => {
console.log('before call promise');
Promise.all(arrayOfAxios.map(url => axios(url))).then(res => {
// −−−−−−−−−−−−−−−−−−−−−−−−−−−−^^^^^^^^^^^^^^^^^ *** Making the calls
console.log({ res });
});
}, 5000);