Обещание реализовано, чтобы ждать чего-то, что занимает больше времени.Вам просто нужно правильно реализовать обещание.
Например, если у нас есть 3 функции, возвращающие обещание, и одна вложенная функция, также возвращающая обещание, вот как это реализовано:
functionA()
.then( result => {
return functionB();
})
.then( result => {
return nestedFunct();
})
.then( result => {
return functionC();
})
.then( result => {
console.log(result);
})
.catch( error => {
console.log(`Error in one of the above function`);
});
Все функциисхожего формата
function functionA() {
return new Promise( (resilve, reject) => {
resolve('something');
// or
reject('Error');
});
}
Вложенная функция может быть такой:
function nestedFunc() {
return functionD() // Return promise
.then( result => {
return functionE(); // return promise
})
.then( result => {
return functionF(); // return promise or value
});
}
Цепочка основных обещаний не зависит от того, что отдельные функции делают, пока они продолжают возвращать обещание.Все отдельные функции могут иметь локальную цепочку обещаний.Даже если во вложенной цепочке произошла ошибка, она будет перехвачена catch()
в основной цепочке обещаний.