“返回$q.拒绝(响应)”有什么作用
What does "return $q.reject(response)" do?
我对声明有点困惑
return $q.reject(response);
在responseError
拦截器内部。
我已经浏览了这篇关于 webdeveasy 的文章和一篇关于角度文档的文章,但它们没有帮助。
这是我的代码(供参考):
(function () {
"use strict";
angular.module('xyz').factory('errorResponseInterceptor', ['$q', 'toaster', function ($q, toaster) {
return {
...
...
...
responseError: function (response) {
...
...
//some logic here
...
...
if (response.status == 500) {
toaster.error({ title: "", body: response.statusText });
return $q.reject(response);//what does this statement does and why do we need to put it here?
}
return response;
}
};
}]);
}());
我的问题是:
- 为什么我们需要写
return $q.reject(response)
? - 这条线如何影响角度应用程序(它有什么作用)?
Angular 中的 $q
对象允许我们定义一个承诺并处理与一个承诺相关的行为。我们如何做到这一点的一个例子是:
var q = $q.defer()
//do something
if(success){
q.resolve()
} else {
q.reject()
}
return q
我们在这里所做的是定义一个承诺对象并将其分配给变量 q
.然后我们执行一些操作,并使用该操作的结果来确定 promise 是否成功返回。在 promise 对象上调用 .resolve()
表示 promise 已正确返回。出于同样的原因,在承诺上调用.reject()
也表明它已经失败了。
如果我们考虑如何实际使用承诺:
SomeFactory.getSomething().then(function(data){
//gets called if promise resolves
}, function(error){
//gets called if promise rejected
}
因此,在您提供的示例中,我们正在检查响应是否有 500 错误代码,如果有,我们将拒绝承诺,从而允许我们处理错误。
在responseError
拦截器中,关于返回的内容,您有两种选择。如果返回$q.reject(response)
则继续事件的错误处理链。如果您返回任何其他内容(通常是新的承诺或响应),则表示错误已从中恢复,应被视为成功。
关于你的两点:
1-您需要编写该行以指示响应仍应被视为错误。
2-对角度应用程序的影响是将调用错误回调而不是成功回调。
相关文章:
- “$xml = $( xmlDoc )”有什么作用
- 发现这个讨厌的代码,我想知道它有什么作用?我应该担心吗..
- 这个图像加载功能有什么作用
- meteor / react - “readOnly”属性有什么作用
- “this”这个词在jQuery中有什么作用
- 金属特性在三.JS中有什么作用
- 像“apples: 5”这样的行在 JavaScript 中有什么作用
- 在 Function.prototype.method 中返回它有什么作用
- 本声明的结尾部分有什么作用
- JSHint 'nocomma' 选项有什么作用
- 这个示例 CKEditor JavaScript 函数有什么作用
- “返回假”有什么作用
- “返回$q.拒绝(响应)”有什么作用
- 文件 app.json 有什么作用
- 回调(false)和回调(true)有什么作用
- 下面的Javascript函数有什么作用
- 下面的 JavaScript 函数有什么作用,我可以用它来做什么
- Javascript:这个代码片段有什么作用和错误代码Uncatch TypeError:allEnemies.forE
- Facebook channelURL 和 appId 有什么作用
- “!” 字符在 nodejs 模块名称中有什么作用