Пирамида обратного вызова даже с обещанием Когда

У меня есть 3 функции, которые я хочу выполнить одну за другой, только когда предыдущая функция завершила свою задачу. Я использую для этого библиотеку When Promise,

function taskA(){
    var d = when.defer();
    d.resolve();
    return d.promise;
}
function taskB(){
    var d = when.defer();
    d.resolve();
    return d.promise;
}
function taskC(){
    var d = when.defer();
    d.resolve();
    return d.promise;
}

taskA().then(function(){
    taskB().then(function(){
        taskC().then(function(){
}); }); });

Это как должно быть? У меня сложилось впечатление, что я могу легко избежать обратных вызовов и его «пирамиды гибели», используя промисы, или я использую их неправильно?


person laggingreflex    schedule 08.04.2014    source источник


Ответы (1)


Что о

taskA()
   .then(taskB)
   .then(taskC)
   .then(function(){});
person Maxim Krizhanovsky    schedule 08.04.2014
comment
Это потому, что обещания разворачиваются. Когда вы возвращаете промис из обработчика .then, он будет ждать, пока этот промис не будет разрешен, прежде чем выполнять ext one. - person Benjamin Gruenbaum; 08.04.2014