Я пишу код для асинхронной / ожидающей параллельной обработки, но он не обрабатывает все записи, если произошла какая-либо ошибка, не обрабатывает остальную часть записи
async function test() {
let i = 0
let userId = [5000, 1000, 7000]
try {
while (i < userId.length) {
const userEmail = await getUserEmail(userId[i])
let sendEmailResult = await postSendUserEmail(userEmail)
i++
}
} catch (err) {
console.log('Got error')
}
}
(async () => {
await test();
// Do some logic here
console.log('All done')
})().catch(e => console.log(e));
function getUserEmail(milis) {
return new Promise(function(resolve, reject) {
if (milis == 1000) {
setTimeout(() => {
console.log('Rejecting millis', milis)
return reject('Got error')
}, milis);
} else {
setTimeout(() => {
console.log('Processing millis', milis)
return resolve(milis);
}, milis);
}
})
}
function postSendUserEmail(milis) {
return new Promise(function(resolve, reject) {
if (milis == 1000) {
setTimeout(() => {
console.log('Rejecting email', milis)
return reject('Got email error')
}, milis);
} else {
setTimeout(() => {
console.log('Sending email', milis)
return resolve(milis);
}, milis);
}
})
}
Здесь getUserEmail отклоняет обещание, когда значение равно 1000,
Мой вопрос заключается в том, что при циклической обработке всех операций параллельно для каждой записи и почему не все записи не обрабатываются, если происходит какое-либо отклонение, то как обрабатывать все записи, разрешить или отклонить, используя async / await