Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么是;返回$q.reject(响应)";做_Javascript_Angularjs_Angular Http Interceptors - Fatal编程技术网

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应用程序(它做什么)

  • 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
    }