Код, который вы написали, похож на
var promise = new Promise((resolve, reject) => { reject('Rejected!'); });
promise
.then(()=>new Promise ((resolve, reject) => resolve('Done!')))
.catch(() => console.log('Failure of first Promise'))
.then(() => console.log('Success of nested Promise'))
.catch(() => console.log('Failure of nested Promise'));
console.log('This will be still printed first!');
, так как catch
также возвращает обещание, then
, связанный с catch
, также будет запущен, если есть только один catch
в конце всех then
, этот улов будет запущен без какого-либо then
.
вы можете сделать следующее, чтобы преодолеть эту проблему,
promise
.then(()=>new Promise ((resolve, reject) => resolve('Done!')))
.then(() => console.log('Success of nested Promise'))
.catch(() => console.log('Failure of Promise'));
console.log('This will be still printed first!');