Angularjs 在调用$http侦听器后停止执行$timeout

Angularjs 在调用$http侦听器后停止执行$timeout,angularjs,timeout,interceptor,Angularjs,Timeout,Interceptor,我正在使用$httpProvider.interceptors捕获401或403请求,然后结束会话并重定向到登录页面。有一个函数具有超时功能,如果我得到401或403响应,我想停止执行此超时,您需要保存计时器,如: 您需要保存计时器,如: 您可以使用$timeout.cancel(timer)停止计时器 请在文档中阅读更多信息: 您可以使用$timeout.cancel(timer)停止计时器 请在文档中阅读更多信息: 您可以很容易地取消超时 var myTimeout = $timeout(f

我正在使用$httpProvider.interceptors捕获401或403请求,然后结束会话并重定向到登录页面。有一个函数具有超时功能,如果我得到401或403响应,我想停止执行此超时,您需要保存计时器,如:


您需要保存计时器,如:


您可以使用
$timeout.cancel(timer)
停止计时器

请在文档中阅读更多信息:
您可以使用
$timeout.cancel(timer)
停止计时器

请在文档中阅读更多信息:
您可以很容易地取消超时

var myTimeout = $timeout(function() {}, 1000);
// Check http status code
if (someHttpCode === 401){
  // Stop the timeout
  $timeout.cancel(myTimeout);
}

您可以很容易地取消超时

var myTimeout = $timeout(function() {}, 1000);
// Check http status code
if (someHttpCode === 401){
  // Stop the timeout
  $timeout.cancel(myTimeout);
}

这就是我将链接保留到w3的原因?我不知道为什么您认为需要突出显示它DownVote,因为问题显然是关于angular的,所以不适合使用
setTimeout
。这就是我将链接保留到w3的原因?我不知道为什么您认为需要突出显示它DownVote,因为问题显然是关于angular的,所以它不是适合使用
setTimeout
。取消功能不是“因为它返回承诺”。一般来说,无法取消承诺,这是超时时添加到承诺中的额外功能。另外值得注意的是,angularjs的最新版本不要求您传递空函数,您只需调用
$timeout(1000)
即可获得承诺。@Duncan感谢您的更正,我想我知道我们可以通过将超时保存在变量中来取消超时,我只是想知道是否有一个全局方法可以一次刷新所有挂起的超时,而不将其保存在任何变量中。据我所知,angularjs没有全局清除所有超时,您将需要使用我上面展示的方法。取消的能力并不是“因为它返回承诺”。一般来说,无法取消承诺,这是超时时添加到承诺中的额外功能。另外值得注意的是,angularjs的最新版本不要求您传递空函数,您只需调用
$timeout(1000)
即可获得承诺。@Duncan感谢您的更正,我想我知道我们可以通过将超时保存在变量中来取消超时,我只是想知道是否有一个全局方法可以一次刷新所有挂起的超时,而不保存在任何变量中,据我所知,angularjs没有全局清除所有超时,您将需要使用我在上面展示的方法。您应该在回答中提供一些上下文和解释,而不仅仅是指向文档的链接。如果链接将来失效,也请引用文档的相关部分。请看,您应该在回答中提供一些上下文和解释,而不仅仅是文档的链接。如果链接将来失效,也请引用文档的相关部分。看见