はい、約束を活用することができます。あなたが別の内の約束を返す場合は、厄介なネストを避けることができます。
var app = angular.module('plunker', []);
// Before
app.controller('MainCtrl', function($scope, ProductService) {
$scope.name = 'World';
$scope.products = [];
$scope.moreProducts = [];
ProductService.getProducts().then(function(res){
$scope.products = res.data;
ProductService.getMoreProducts().then(function(res){
$scope.moreProducts = res.data;
});
});
});
// After with promise chaining
app.controller('MainCtrl', function($scope, ProductService) {
$scope.name = 'World';
$scope.products = [];
$scope.moreProducts = [];
ProductService.getProducts().then(function(res){
$scope.products = res.data;
return ProductService.getMoreProducts()
})
.then(function(res){
$scope.moreProducts = res.data;
});
});
app.service('ProductService', function($timeout){
this.getProducts = function() {
return $timeout(function(){
return {
data: [{name: 'Widget', color: 'blue'}]
}
}, 500)
}
this.getMoreProducts = function() {
return $timeout(function(){
return {
data: [{name: 'Widget', color: 'green'}, {name: 'Widget', color: 'red'}]
}
}, 1000)
}
})
getProducts
とgetMoreProducts
通話のための要件に応じて、あなたの代わりに異なる機能を作るの引数を使用することができます。
http://plnkr.co/edit/K4LPKWSD06QnwbRk8k0B?p=preview
編集:ところで
、私はそれだけで、デフォルトのplunkerテンプレートだ、コントローラおよびサービスを作成するためのこのスタイルをrecommmendません。
がこの約束が反対を助けることになっているかを正確にある、Y021Y022Y031
参照[約束のコールバックをネスト解除する方法](http://stackoverflow.com/a/22000931/1048572 ) – Bergi
これらの呼び出しは同期ではなく、連続しています。 – Bergi