【发布时间】:2015-10-01 07:50:33
【问题描述】:
我正在使用下面的代码来简化后端请求,但我没有掌握如何调用成功方法或错误方法。
如何才能达到代码中注释的预期行为?
app.factory('REST', function ($http, $q, sweetAlert) { 返回 { 加载:功能(模块,动作,数据){ var deferred = $q.defer(); var promise = deferred.promise; $http .post('/api/'+module+'.php?action='+action, data) .success(函数(数据){ 如果(数据。错误) { sweetAlert.swal({ 标题:“错误”, 文本:data.error, 类型:“警告” }); //在这里我想调用 .error(details) } 别的 deferred.resolve(data.result); }).error(函数 () { //在这里我想调用 .error(details) }); promise.success = 函数(fn){ 承诺.then(fn); 回报承诺; } 回报承诺; } }; });这是使用上述代码的代码:
$scope.login = function () {
$scope.loading = true;
var payload = {'credentials': $scope.logindata};
REST.load('access', 'login', payload).success(function(data) {
if(data.redirect)
$state.go(data.redirect);
$scope.loading = false;
}).error(function(data) { //THIS SHOULD BE CALLED
$scope.loading = false;
});
}
【问题讨论】:
-
常规承诺没有任何成功()/错误()功能。它们有一个 then() 和一个 catch() 函数。这些是您的客户端代码应该调用的。阅读blog.ninja-squad.com/2015/05/28/angularjs-promises
-
你的意思是你想打电话给
.reject(),而不是.error()?
标签: angularjs callback promise q deferred