2014-09-21 50 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