Ждите всех обещаний, чтобы решить

Поэтому у меня есть ситуация, когда у меня есть несколько цепочек обещаний неизвестной длины. Я хочу, чтобы какое-то действие выполнялось, когда все ЦЕПИ были обработаны. Это вообще возможно? Вот пример:

app.controller('MainCtrl', function($scope, $q, $timeout) {
    var one = $q.defer();
    var two = $q.defer();
    var three = $q.defer();

    var all = $q.all([one.promise, two.promise, three.promise]);
    all.then(allSuccess);

    function success(data) {
        console.log(data);
        return data + "Chained";
    }

    function allSuccess(){
        console.log("ALL PROMISES RESOLVED")
    }

    one.promise.then(success).then(success);
    two.promise.then(success);
    three.promise.then(success).then(success).then(success);

    $timeout(function () {
        one.resolve("one done");
    }, Math.random() * 1000);

    $timeout(function () {
        two.resolve("two done");
    }, Math.random() * 1000);

    $timeout(function () {
        three.resolve("three done");
    }, Math.random() * 1000);
});

В этом примере я настроил$q.all() для обещаний один, два и три, которые будут решены в случайное время. Затем я добавляю обещания на концы 1 и 3. Я хочуall решить, когда все цепочки были решены. Вот вывод, когда я запускаю этот код:

one done 
one doneChained
two done
three done
ALL PROMISES RESOLVED
three doneChained
three doneChainedChained 

Есть ли способ дождаться разрешения цепей?

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

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