Проблема в том, что вы
return Promise.reject(err);
в обоих фрагментах. Это приводит к отклоненному Обещанию, к которому все это разрешается, и если этот отказ нигде не обрабатывается, вы получите предупреждение «необработанный отказ».
Если потребителю simpleFunction
необходимо использовать Обещание, убедитесь, что оно также перехватывает его, и убедитесь, что return
вызов Promise.all
.
Нет необходимости заключать вызов Promise.all
в .then
и catch
, Вы можете просто вернуть Promise.all
сам. Это создаст Обещание, которое отклонит, если какое-либо из Обещаний в массиве отклонит, что вам нужно:
function simpleFunction() {
let queue = [];
queue.push(*PROMISE1*);
queue.push(*PROMISE1*);
queue.push(*PROMISE1*);
return Promise.all(queue);
}
simpleFunction()
.catch((err) => {
// handle errors
});
Или, если потребитель не использует Обещание, тогда .catch
in simpleFunction
, но не создавайте отклоненное обещание , просто обработайте ошибку (или проигнорируйте ее в catch
, хотя это не очень хорошая идея):
function simpleFunction() {
let queue = [];
queue.push(*PROMISE1*);
queue.push(*PROMISE1*);
queue.push(*PROMISE1*);
Promise.all(queue)
.catch((err) => {
// handle errors here
// do NOT call `Promise.reject`,
// because then the rejection will be unhandled
});
}