2013-08-05 24 views
10
$http.get('/services/menu').success(function (dataMenu) { 
    $http.get('/services/language').success(function (dataLanguage) { 
      console.log('dataLanguage', dataLanguage); 
      $scope.menuRoot = dataMenu.result.items; 
      $scope.menuItems = dataMenu.result.items; 
      $scope.languageRoot = dataLanguage.result; 
      $scope.currentMenuItem = null; 
      $scope.refreshExperiments(); 
      $scope.mergeLanguage(); 
    }); 
}); 
+2

['$ q.all'] 'a (http://docs.angularjs.org/api/ng.$q) ve [' $ q.when']' e bakabilirsiniz (http://docs.angularjs.org/api/ng.$q). –

cevap

25

Evet, $q.all kullanarak paralel olarak bunları çalıştırabilirsiniz: Alternatif

$q.all([$http.get('/services/menu'), $http.get('/services/language')]) 
    .then(function (res) { 
     var dataMenu = res[0].data.result.items; 
     console.log('dataLanguage', res[1].data); 
     $scope.menuRoot = dataMenu; 
     $scope.menuItems = dataMenu; 
     $scope.languageRoot = res[1].data.result; 
     $scope.currentMenuItem = null; 
     $scope.refreshExperiments(); 
     $scope.mergeLanguage(); 
}); 
+0

Bir çekicilik gibi çalışır. Res'in başka bir 'veri' nesnesi içerdiğine dikkat edin, böylece onu düzenledim. – Guy

0

:

sonra aynı anda $http istekleri hem yapar ve
var menuPromise = $http.get('/services/menu'); 
var languagePromise = $http.get('/services/language'); 

menuPromise.success(function(dataMenu) { 
    languagePromise.success(function(dataLanguage) { 
     console.log('dataLanguage', dataLanguage); 
     $scope.menuRoot = dataMenu.result.items; 
     $scope.menuItems = dataMenu.result.items; 
     $scope.languageRoot = dataLanguage.result; 
     $scope.currentMenuItem = null; 
     $scope.refreshExperiments(); 
     $scope.mergeLanguage(); 
    }); 
}); 

kodunu çalıştırır $http sözlerinin her ikisi de yerine getirildiğinde (console.log... etc) blok.

+0

Çalışacağından emin misiniz? LanguagePromise, languagePromise'den önce bittiyse ne olur? – Guy

+1

"... sözün ne zaman olduğu veya ne zaman reddedileceğine veya reddedileceğine bakılmaksızın," o zaman ", sonuç elde edildikten hemen sonra" o zaman "sekmeli dokümanlara basarılırsa," başarısızlık "ifadesi başarısız olur. ... Bence "başarı" sadece "için" şekeridir, bu yüzden languagePromise ilk olarak çözülürse, menuPromise çözülene kadar hala çağrılmayacaktır. – Brendan

İlgili konular