2016-07-04 4 views
0

Мне нужно два независимых массива для работы с ними внутри функции. Поэтому я возвращаю обещания. Но когда он добирается до arrayOne.length, он не ждет, пока обетования не будут решены. Как это сделать?В зависимости от двух обещаний

this.workWithArrays = function() { 
    var arrayOne = this.getArrayOne(); 
    var arrayTwo = this.getArrayTwo(); 

    for (var i = 0; i < arrayOne.length; i++) { 
     ..... 
    } 

getArrayOne и getArrayTwo в основном идентичны:

this.getArrayOne = function() { 
    return $http.get('/1').then(
     function success(response) { 
     return response.data; 
     }, 
     function error(data) { 
     console.log(data); 
     } 
    ); 
} 
+2

Ну, вы не ждали * любой * обещание разрешить здесь, не говоря уже о двух. – deceze

ответ

1

Вводят $q обслуживание и использовать его all метод:

this.workWithArrays = function() { 
var arrayOne = this.getArrayOne(); 
var arrayTwo = this.getArrayTwo(); 
$q.all([arrayOne,arrayTwo]).then(function(responses){ 
    // your logic that needs to run after both promises resolve 
});