Я использую Inquirer.js для взаимодействия с пользователем. В одном из диалоговых окон пользователь может указать разделенный запятыми список «элементов». Следующая функция проверки сравнивает с API, доступен ли «элемент». Если нет, пользователю предлагается внести исправления в свой предыдущий выбор.
Текущий код:
validate: async str => {
const items = str.split(',');
for(let item of items) {
try {
await axios.get(`https://api.example.com/items/${item}`);
} catch(e) {
return `The item '${item}' could not be found`;
}
}
// data exists, but is irrelevant
return true;
}
Хотя все это работает как надо, итерации по массиву пакетов и вызов axios.get()
для каждого элемента кажутся ужасно неэффективными. Есть ли способ запустить их параллельно и прервать работу после сбоя одного из запросов?
Опять же, меня интересуют не фактические данные элемента, а только то, существует ли он (равен true
) или нет (возвращает сообщение об ошибке).