[英]Why isnt my promise working in angular js?
下面是我的角度控制器,但在其中,我的諾言似乎不起作用。 console.log沒有顯示響應,也沒有在此處顯示警報。
myapp.controller('contrl6', ['$scope','$q','$localStorage','$http',
function ($scope,$q,$localStorage,$http) {
$scope.myXhr = function(){
var q = $q.defer();
$http({
method: 'GET',
url: '/api/session_data'
})
.success(function(response){
console.log(response);
q.resolve('request successful');
})
.error(function(response){
console.log("error");
q.reject('ERROR');
});
return q.promise;
}
console.log("hi");
var myPromise = $scope.myXhr();
myPromise.then(function(resolve){
alert(resolve);
console.log(resolve);
}, function(reject){
alert(reject);
console.log(reject);
});
}]);
在myxhr
內部,沒有任何東西與$http
的結果連接在一起。 不必擔心創建新的Promise,因為$http
已經返回了一個:
$scope.myXhr = function(){
return $http({
method: 'GET',
url: '/api/session_data'
})
.then(function(response){
return response;
})
.catch(function(response){
throw new Error('ERROR');
});
}
棄用通知
$http
舊版.success
方法.success
和.error
已過時。 請使用標准的.then
方法。 1
$scope.myXhrPromise = function(){
return (
$http({
method: 'GET',
url: '/api/session_data'
}).then (function onFulfilled (response) {
console.log(response.data);
//return data for chaining
return response.data;
}).catch (function onRejected (response) {
console.log(response.status);
//throw to chain rejection
throw response;
})
);
};
我將您的代碼復制/粘貼到Plunkr中,一旦正確連接,它就可以正常工作。
正如Duncan所說,請確保使用ng-app和ng-controller正確連接。 如果您可以使用HTML標記更新您的問題,也許我們可以提供進一步的幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.