Отобразить функции отправки в массив для Promise.all - PullRequest
0 голосов
/ 23 октября 2019

У меня есть следующий фрагмент кода, более или менее:

let images = [{ ... }, { ... }, { ... }, ...];

Promise.all([
  dispatch(uploadImage(images[0]),
  dispatch(uploadImage(images[1]),
  ...
]).then(() => dispatch(success());

Теперь, очевидно, я не могу жестко закодировать это, поэтому я хотел бы отобразить массив, который я передаю, в Promise.all. Что было бы самым простым способом сделать это? Я пробовал функции стрелок, возвращая анонимные функции, но я просто не могу понять это.

1 Ответ

0 голосов
/ 23 октября 2019

Вы можете использовать Array.map , который будет возвращать массив обещаний.

Promise.all(images.map((image) => dispatch(uploadImage(image))));

Обновить до комментария

const uploadImage = async() => {
  console.log("uploadImage");

  return Promise.resolve();
};

const dispatch = async() => {
  console.log("dispatch");

  return Promise.resolve();
};

const images = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

const imagesPromises = images.map((image) => {
  return () => dispatch(uploadImage(image));
});

Promise.all(imagesPromises.map((promise) => promise())); // Promises wont execute till this line. 
...