Javascript 什么是;返回$q.reject(响应)";做
我对这句话的意思有点困惑Javascript 什么是;返回$q.reject(响应)";做,javascript,angularjs,angular-http-interceptors,Javascript,Angularjs,Angular Http Interceptors,我对这句话的意思有点困惑 return $q.reject(response); 在responseError拦截器内执行 我经历过,但他们没有帮助 这是我的代码(供参考): 我的问题是: 为什么我们需要编写返回$q.reject(response) 这条线如何影响angular应用程序(它做什么) Angular中的$q对象允许我们定义承诺并处理与承诺相关的行为。我们可以这样做的一个例子是: var q = $q.defer() //do something if(success){
return $q.reject(response);
在responseError
拦截器内执行
我经历过,但他们没有帮助
这是我的代码(供参考):
我的问题是:
返回$q.reject(response)
Angular中的
$q
对象允许我们定义承诺并处理与承诺相关的行为。我们可以这样做的一个例子是:
var q = $q.defer()
//do something
if(success){
q.resolve()
} else {
q.reject()
}
return q
我们在这里所做的是定义一个promise对象并将其分配给变量q
。然后,我们执行一些操作,并使用该操作的结果来确定承诺是否成功返回。在promise对象上调用.resolve()
,表示promise已正确返回。出于同样的原因,对promise调用.reject()
表示is已失败
如果我们考虑我们如何使用承诺:
SomeFactory.getSomething().then(function(data){
//gets called if promise resolves
}, function(error){
//gets called if promise rejected
}
因此,在您提供的示例中,我们正在检查响应是否有500个错误代码,如果有,我们将拒绝承诺,从而允许我们处理错误
在responseError
拦截器中,关于返回的内容,您有两个选择。如果返回$q.reject(response)
,则继续执行错误处理事件链。如果您返回任何其他内容(通常是新的承诺或响应),则表明错误已从中恢复,应视为成功
关于你的两点:
1-您需要写入该行,以表明响应仍应被视为错误
2-angular应用程序的效果是将调用错误回调而不是成功回调。有趣!上面的回答只是关于承诺的哲学,我正在做的是拒绝来自http拦截器的响应。你能谈谈你的答案在那种情况下是如何有用的吗?你的问题有点模糊。你是在问$q.reject行是做什么的,还是在问为什么你需要在这种情况下这么做?我是在问为什么我们需要写那个声明。它对angular应用程序有什么影响?好的,在这种情况下,您需要编写该语句,因为拦截器暴露了一个promise对象($q),如果出现错误,您需要拒绝它。
SomeFactory.getSomething().then(function(data){
//gets called if promise resolves
}, function(error){
//gets called if promise rejected
}