Всякий раз, когда вы обнаруживаете ошибку, вы должны правильно ее регистрировать, а не просто записывать false
или что-то в этом роде.
Так что если вы напишите console.error(err);
вместо console.log('false')
, вы получитеошибка это что-то вроде TypeError: "can't convert undefined to object"
или TypeError: Cannot read property 'Symbol(Symbol.iterator)' of undefined
для строки с Promise.all(promise)
.И это должно дать вам подсказку, что promise
не содержит массив с Promises, но undefined
.
promise
равен undefined
, поскольку forEach
не возвращаетчто-нибудь.То, что вы ищете, это map
.
Вьющиеся скобки вокруг вашего new Promise((resolve, reject) => {})
предотвращают возвращение new Promise
, поэтому либо добавьте return
передnew Promise
или удалите эти фигурные скобки.
И вы всегда должны отклонять с фактической ошибкой, иначе вы не сможете получить правильную трассировку стека для ошибки.
var array = [1, 2, 3, 4, 5];
var promise = array.map(n =>
new Promise((resolve, reject) => {
if (n == 5) return reject(new Error('rejected for n==5'));
return resolve();
})
)
Promise.all(promise).then(() => {
console.log('true');
}).catch(err => {
console.error(err);
});