JavaScript Promise.all - как проверить статус разрешения? - PullRequest
0 голосов
/ 01 июня 2018

Допустим, у меня есть массив обещаний, каждый элемент beign AJAX-вызов для изображения (png) представления.

const images = Promise.all(views.map(view => {
   return fetch(`/sites/${siteId}/views/${view.id}/image/`);
}));

Есть ли возможность проверить текущее состояние разрешения обещания, используяPromise.all?Если нет, есть ли другой способ?

Например, если было загружено 10/20 изображений, я хотел бы дать пользователю отзыв, что мы загрузили 50% изображений для него.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Нет необходимости использовать setInterval.Обновлять только прогресс, когда он обновляется.

const promises = views.map(view => fetch (`/sites/${siteId}/views/${view.id}/image/`));
const images = Promise.all(promises);

let progress = 0;
promises.forEach(p => p.then(() => {
  progress++;
  console.log(progress / promises.length * 100 + "%");
}));
0 голосов
/ 01 июня 2018

Просто увеличивайте переменную всякий раз, когда обещание разрешается:

const promises = views.map(view => fetch (`/sites/${siteId}/views/${view.id}/image/`));
const images = Promise.all(promises);

let progress = 0;
promises.forEach(p => p.then(() => progress++));

setInterval(() => {
  console.log(progress / promises.length * 100 + "%");
}, 1000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...