У меня есть некоторые функции asyn c, которые выполняют вызовы REST API и возвращают результат. Я хочу использовать Promise.all для вызова нескольких из этих функций одновременно и ожидать полного результата. Я понимаю, как работает Promise.all, и это не проблема с Promise.all. Это проблема с использованием Array.pu sh для динамического создания массива асин c функций, которые я хочу вызвать.
Итак, вот сценарий. Пользователь моего приложения загружает страницу. Эта страница должна получить данные из API. Для этого используются те функции asyn c, о которых я упоминал. Однако данные, которые должна получить страница, отличаются в зависимости от установленных параметров. Поэтому иногда может потребоваться получить список пользователей, определенного клиента c и определенного проекта c. В других случаях может потребоваться получить всех пользователей и все проекты, а не клиентов.
Так что мой код выглядит примерно так:
created() {
let promiseList = []
if (options.getCustomers) { promiseList.push(listCustomers())
if (options.getCustomer) { promiseList.push(getCustomer(customerId)) }
if (options.getUsers) { promiseList.push(getUsers()) }
await Promise.all(promiseList)
}
Так что это работает в некоторой степени. Promise.all работает просто отлично. Проблема в том, что я не могу поместить функцию sh в массив без немедленного ее вызова. Таким образом, каждая функция, которую я помещаю в массив обещание, вызывается дважды: немедленно и снова с Promise.all.
Как я могу передать sh функцию asyn c в массив как ссылка, чтобы она не выполнялась сразу?