Как избежать ошибки «Чрезмерное количество ожидающих обратных вызовов: 501» при загрузке изображений в React Native? - PullRequest
0 голосов
/ 28 апреля 2020

Мне нужно скачать коллекцию изображений по нажатию кнопки. В настоящее время я делаю это следующим образом: react-native-fs:

const downloadImageItem = async (imgUrl, id) => {
  const path = `${RNFS.DocumentDirectoryPath}/${id}.jpg`;

  RNFS.downloadFile({
    fromUrl: imgUrl,
    toFile: path,
  });
};
const downloadImages = async (items) => {
  for (const item of items) {
    if (item.images.length) {
      await downloadImageItem(item.images[0].thumb, item.images[0].id);
    }
  }
  return Promise.resolve();
};

Вызов функции из моего редуктора для 3 типов элементов:

await downloadImages(items_one);
await downloadImages(items_two);
await downloadImages(items_three);

Моя проблема что иногда я получаю сообщение об ошибке: Чрезмерное количество ожидающих обратных вызовов: 501

Есть ли лучший способ сделать то же самое, чтобы ошибка не появляется?

1 Ответ

1 голос
/ 28 апреля 2020

Аналогичная проблема была открыта в хранилище react-native в декабре 2019 года, она до сих пор не закрыта или не решена, но я думаю, что этот комментарий может оказаться полезным.

Описываемая проблема заключается в том, что слишком большое количество Promise вызовов в очереди может быть проблематичным c. Комментатор предложил использовать служебную функцию Promise с именем Promise.map(), которая имеет управление параллельным доступом из коробки, из библиотеки bluebird .

...