По какой причине скрипт падает не выдавая ошибку?
Есть такой скрипт:
const initCycleTLS = require('cycletls');
(async () => {
let arr = new Array(5000).fill(1);
let promises = arr.map(async () => {
let cycleTLS = await initCycleTLS().catch(error => console.log('Init CycleTLS error: ' + error));
if (typeof cycleTLS === 'function')
{
await cycleTLS('https://google.com').catch(error => console.log('Request error: ' + error));
await cycleTLS.exit().catch(error => console.log('Exit CycleTLS error: ' + error));
}
});
await Promise.all(promises);
console.log('DONE');
})();
При запуске с массивом arr
с небольшой длиной все работает нормально, скрипт выводит "DONE" в конце, но при запуске с большим массивом, как в примере он падает молча, либо выдает инфу из catch
, но до "DONE" не доходит, хотя все исключения отлавливаются. В чем может быть причина?
P.S. Я знаю что библиотеку нужно использовать иначе, это искусственный пример в котором происходит какой-то совершенно новый для меня баг, понимание которого нужно для образовательных и познавательных целей.
Ответы (1 шт):
В разделе Пример множественных запросов для Typescript и Javascript показано как использовать экземпляр CycleTLS правильно, на сколько я понимаю - он должен быть единственным:
(async () => {
const cycleTLS = await initCycleTLS();
const promises = (new Array(5)).fill(1).map(
() => cycleTLS('https://google.com', {}, 'get'),
);
await Promise.all(promises);
await cycleTLS.exit();
})().catch(console.error).finally(() => console.log('DONE'));