私のコントローラーには、必要なすべての依存関係が注入されています。
$scope.connect = function(url) {
var defer = $q.defer();
var promise = $http.get(url).then(function (response) {
$timeout(function(){
defer.resolve(response);
},10000);
defer.resolve(response);
$scope.$apply(); //$rootScope.$apply();
});
return defer.promise;
};
$scope.mymethod = function(){
$scope.globalMydata[];
console.log("before the http get");
$scope.connect("MY_URL").then(function(data) {
console.log("called!", data);
console.log("INSIDE the http get");
$scope.mydata = data;
//$scope.globalMydata.push(data);
});
console.log("after the http get ");
//do some processing of the returned data here
var dataHolder = $scope.mydata;
return calculatedValue;//value from procesing
}
コードが実行されると、「INSIDE the http get」が最後のデバッグ ログとして呼び出されます。get 呼び出しから結果を取得しますが、後で返されるため、処理を行うことができません。これが私たちが約束する正確な理由ですよね?コントローラー内で何らかの処理を行うには、約束されたデータが必要です。
私の約束の実装に問題はありますか??