[英]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.