【问题标题】:For which status codes does the promise resolvePromise 解决了哪些状态码
【发布时间】:2014-07-16 08:23:13
【问题描述】:

我想澄清来自 $http 的承诺针对哪些 http 状态代码被解决,哪些被拒绝。据我了解,它仅在 200 的情况下解决,其余的都被拒绝。

对吗?还是有其他情况?

【问题讨论】:

标签: javascript angularjs promise


【解决方案1】:

编辑:

对于 AngularJS

200 到 299 之间的响应状态代码被视为成功状态,将导致调用成功回调。任何超出该范围的响应状态码都被视为错误状态,并会导致调用错误回调。

来源:https://github.com/angular/angular.js/blob/master/src/ng/http.js

【讨论】:

  • 感谢您的描述,但我的问题只是在承诺解决的情况下:)
  • 问题是“$http 解析/拒绝哪些状态代码?”,而不是“我如何控制哪些状态代码解析和哪些拒绝?”
【解决方案2】:

正如 Bergi 在 cmets 中针对您的问题指出的那样,答案在于源代码。在$http 中有一个私有函数叫做isSuccess,看起来是这样的:

function isSuccess(status) {
  return 200 <= status && status < 300;
}

它在该文件中的几个地方使用,但对我们而言重要的是:

(isSuccess(status) ? deferred.resolve : deferred.reject)({ //...

所以这就是你的答案! 2**(200-20)范围内的任何状态码都是成功的,并且会解决 $http 包裹 XHR 的承诺,其他任何状态码都是失败的并且会拒绝它。

现在docs for $http也有解释。

【讨论】:

    猜你喜欢
    • 2019-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 2021-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多