Мне нужно скачать каталог изображений (всего около 5000 изображений), для этого я использую модуль react-native-fs
. Моя проблема заключается в том, что каждый раз, когда я вызываю функцию downloadCatalog
, я получаю сообщение об ошибке Excessive number of pending callbacks: 501...
Поэтому я пытался сделать это с помощью функции Promise.map()
из библиотеки bluebird
, но, похоже, она ничего не изменила ,
Моя функция загрузки
const downloadImageItem = async (url, id) => {
const path = `${RNFS.DocumentDirectoryPath}/${id}.jpg`;
return RNFS.downloadFile({
fromUrl: url,
toFile: path,
});
};
Функция, которая перебирает массив данных и динамически формирует URL для скачать
const downloadImages = async (items) => {
await Promise.map(
items,
async (item) => {
item.images.forEach((image) => {
downloadImageItem(image.thumb, image.id);
});
},
{concurrency: 100},
);
return Promise.resolve;
};
Я называю это для 3 различных типов предметов
const downloadCatalog = () => {
await downloadImages(category1.items);
await downloadImages(category2.items);
await downloadImages(category3.items);
}
Вот пример ответа JSON от сервера, через который я зацикливаюсь
[{
"id": 199,
"name": "Annual mercury",
"nameSynonyms": "",
"latinName": "Mercurialis annua",
"latinNameSynonyms": "",
"description": "<p><strong>Description</strong></p>\r\n<p style=\"text-align: justify;\">This is an annual herb growing 10 to 30 centimeters tall with oppositely arranged oval leaves each a few centimeters long. The male flowers are borne in spikelike clusters sprouting from leaf axils, and female flowers grow in clusters of 2 or 3. The fruit is a bristly capsule 2 or 3 millimeters wide containing shiny, pitted seeds.</p>",
"slug": "annual-mercury",
"images": [
{
"id": 1562,
"image": "http://newfs.s3.amazonaws.com/taxon-images-1000s1000/Euphorbiaceae/mercurialis-annua-fl-nkramer.jpg",
"thumb": "http://static.catalog.farmis.lt/problems/2/2f/2f0/2f046943-b5cb-41b8-b481-75412444cca2.jpg"
},
{
"id": 1563,
"image": "http://www.unavarra.es/herbario/fotos/Merc_annu/image002.jpg",
"thumb": "http://static.catalog.farmis.lt/problems/0/00/00d/00d1cf82-b117-4f2d-9498-9eb91eef5e5e.jpg"
},
{
"id": 1565,
"image": "http://calphotos.berkeley.edu/imgs/512x768/0000_0000/1005/0206.jpeg",
"thumb": "http://static.catalog.farmis.lt/problems/b/b1/b16/b16930f4-23c9-480f-9a46-4f1467c0ceb5.jpg"
}
]
},
...]
Это происходит из-за того, что я что-то испортил внутри функции Promise.map()
?