javascript - 成功时拒绝 $http promise

标签 javascript angularjs

我有一个返回 $http GET promise 的函数( promise 成功/错误由调用者处理)。我需要的是,给定某些条件,即使 $http 成功,也返回错误(调用者会将此条件捕获为被拒绝的 promise )。

在这个 plunk 中,我试图返回 $q.reject() 但这不起作用。

http://plnkr.co/edit/iC3Wb1PBUFrXgPbTJyU0?p=preview

这是 JavaScript:

app.controller("ctrl", function($scope, $http) {
  var getUrl = function() {
    var config = {
      method: 'GET',
      url: 'some.txt'
    };
    var x = 1; // if x == 1 the http should fail
    return $http(config).success(function(response, status, headers, config) {
      console.log(response);
      if (x == 1) return $q.reject('error');
    }).error(function(data, status, headers, config) {});
  };
  var init = function() {
    var promise = getUrl();
    promise.then(function() {
      alert('OK');
    }, function() {
      alert('error');
    });
  };
  init();
});

有什么想法吗?

最佳答案

$http.success()error() 是并非 100% 符合 promise 的便捷快捷方式。使用 vanilla promise then 代替:

$http(config).then(function(response){return $q.reject}, function onError(reason){})

updated plunker

关于javascript - 成功时拒绝 $http promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28076258/

相关文章:

javascript - Angular:使用指令禁用 Material 按钮不起作用

javascript - JS验证IP :Port

javascript - 如何将 Jade 变量分配给 Angular 绑定(bind)

html - 自动对齐自定义框/fa 图标未显示

javascript - 检查 ng-repeat 中的项目是否已经包含值

javascript - 如何重用 JQuery 事件?

javascript - tinymce 尝试在 remove() 之后保存

javascript - 我可以用 Bootstrap 做一个部分吗?

javascript - angularjs 是否适合大型以数据为中心的企业 Web 应用程序

javascript - 在 AngularJS 中创建 Promise