.then
принимает только функцию в качестве параметра - ваш
then(new Promise
передает вторую .then
a Обещание (которое инициализируется *когда создается цепочка Promise
, а не когда разрешается предыдущий Promise
).Но .then
не знает, что делать, когда ему передается Promise
, он имеет дело только с функцией параметров.
Вместо этого передайте .then
функцию и получите этоФункция создать обещание, которое будет возвращено, и оно будет правильно поймано:
new Promise(function(resolve, reject) {
console.log('first');
resolve('yes');
}).then(
() => new Promise(function(resolve, reject) {
//^^^^^^
console.log('second');
reject('no');
})
).catch(rej => console.log('catch: ' + rej));