items.map(async item => {
return await new Promise(resolve => setTimeout(resolve, delay)).then(async () =>
await fetch(...);
})
let results = await Promise.all(promises);
Почему не работает такая конструкция?
Херачит по 5 запросов в секунду все равно
(код со стекоферфлоу, не мой)
Ты ещё скажи, что это для друга просто
Потому что тут синхронно проходится цикл по элементам массива и для каждого элемента синхронна сразу создаётся по промису. Потом ты получаешь от мапа массив промисов, запущенных почти одновременно. Если нужна последовательная запись, тебе нужен либо нормальный цикл, либо собирать цепочку промисов в reduce
там там же пробежуточный промис с setInterval есть промис в промисе
setTimeout(foo, 5000) setTimeout(foo, 5000) setTimeout(foo, 5000) setTimeout(foo, 5000) setTimeout(foo, 5000) В таком коде foo сработает последовательно за 25 сек или сразу 5 раз за 5 сек?
о господи
let delay = 3000; const promises = items.map(async item => { return await new Promise(...) let results = await Promise.all(promises); Тоже самое, что let delay = 3000; const promises = []; for (const item of items) { promises.push( new Promise(...) ) }
Я раньше начал писать это сообщение :D
Лучше спроси в @js_noobs_ru
Обсуждают сегодня