2014-09-21 51 views
1

,而我正從Restangular JSON對象,另一個REST URL函數被調用(第一反應來之前)休息的URL電話平行angularjs

Restangular.all("..").getList("..").then(
    function(data){ 
     $scope.dataList = data.dataList;  
    }, function errorCallback() { 
     alert("error"); 
    } 
); 

這裏DataList控件初始化它平行調用另一個函數之前?我怎樣才能避免這種情況?

謝謝。

回答

0

如果你需要打電話給你的服務在特定的順序,那麼你有兩種選擇:

嵌套業務的回調。該解決方案將防止接下來的AJAX調用的執行,直到前面的完成:

Restangular.all("..").getList("..").then(
     function(data){ 
      Restangular.secondFunction("..").getList().then(
      function (data2) { 
       // both data and data2 are available 
      }); 

     }, function errorCallback() { 
      alert("error"); 
     } 
    ); 

使用$q.all()功能,等待延遲對象數組來完成:

var promises = []; 

promises.push(Restangular.all("..").getList("..")); 
promises.push(Restangular.secondFunction("..").getList()); 

$q.all(promises).then(function (results) { 
    for (var i=0; i<results.length; i++) 
    { 
    // all ajax calls have finished now you can iterate through the results 
    } 
}); 

BTW有沒有這樣的事情像parallel execution in javascript

+0

感謝您給予詳細描述先生.. – bews99 2014-09-21 14:31:09