избегая вложенных обратных вызовов с обещаниями

Я все еще новичок в использовании Promise API, и яЯ пытаюсь избежать глубоко вложенных цепочек Promise, которые, насколько я понимаю, являются одним из преимуществ использования Promises. Используя в качестве примера следующий псевдокод, как избежать вложенных обещаний, если последующие основаны на контексте предыдущих?

function loadDependency1() {
    // return a promsise to load the first dependency
}

function loadDependency2(dependency1) {
    // return a promise to load the second dependency, which relies on the first dependency
}

function loadDependency3(dependency2) {
    // return a promise to load the third dependency, which relies on the second dependency
}

function doWork(dependency1, dependency2, dependency3) {
    // finally have all the things necessary to do work
}

// load all the dependencies and eventually doWork
loadDependency1().then(function(dependency1) {
    return loadDependency2(dependency1).then(function(dependency2) {
        return loadDependency3(dependency2).then(function(dependency3) {
            doWork(dependency1, dependency2, dependency3);
        });
    });
});

Ответы на вопрос(1)

Ваш ответ на вопрос