私は工場/サービスを使用して重複したコーディングを排除すると教えられました。ここでうまく動作するコードの一部です。Angularjsでajax呼び出しにファクトリ/サービスを使用するのはなぜですか?
app.controller('ServicesCtrl',['$scope','DataFactory',function($scope,$http,DataFactory){
DataFactory.GetData('services1.json')
.then(function(response){
$scope.returnedData = response.data;
})
.catch(function(response){
console.log('Error in process',response.status,response.data);
});
}]);
app.controller('ContactCtrl',['$scope','DataFactory', function($scope,DataFactory){
DataFactory.GetData('location.json')
.then(function(response){
$scope.returnedData = response.data;
})
.catch(function(response){
console.log('Error in process',response.status,response.data);
});
}]);
app.factory('DataFactory',['$http',function($http){
var factory = {};
factory.GetData = function(path) {
return $http.get(path);
}
return factory;
}]);
私の質問は、なぜ私たちは、コントローラ内部の約束で作業しなければならないとき、このようなAjaxの呼び出しを行うために、サービス/ファクトリを使用1.ですか?つまり、私は同じことをしなければならない。そして、両方のコントローラの呼び出しをここでキャッチする。その効率はどこですか?これを行うための良い方法はありますか?または私はこれを間違っているのですか?工場内のこれらの約束事に取り組み、response.dataを別のコントローラに返すことは可能ですか?
ことは可能キャッシュはサービスで約束です:
は、ドキュメントを参照してください。それ以外の場合、JavaScriptはシングルスレッドです。関数はただちに利用可能なデータを返すことができるか、*未決*の約束を返します。これは、将来解決されるか、拒否されます。 – georgeawg