gpt4 book ai didi

angularjs - 在 Angular 中禁用/删除 http 拦截器的正确方法?

转载 作者:行者123 更新时间:2023-12-02 21:37:50 27 4
gpt4 key购买 nike

我按照这篇文章在项目上实现了类似的 ajax 加载器图像:

我的实现有一些差异:

  • 我使用 $rootScopeemit,而不是broadcast,并且我还在指令上使用 $rootScope处理该事件。
  • 由于项目的特殊性,我必须在事件处理程序内第一个事件被触发(无论是显示还是隐藏)后立即取消绑定(bind)指令 $rootScope.$on 监听器。
  • 我只触发一个显示/隐藏事件。在第一个 HTTP 请求时显示,当计数达到 0 时隐藏。

我相信这些是与链接帖子的主要区别,不确定它们是否与我的问题相关,但以防万一......

当处理加载器隐藏事件时,加载器消失了,除非刷新页面,否则我不会再次显示它,但我仍然有后台http请求来刷新当前页面上的数据。这些请求仍将被拦截并触发新的显示/隐藏事件,这些事件不再需要/处理。我只需要第一次显示和第一次隐藏,就是这样。

在第一个隐藏事件触发后删除我添加到 $httpProvider 的 HTTP 拦截器的正确方法是什么?

我知道我们使用 $httpProvider.interceptors.push() 添加拦截器,但我不确定当我不再需要该拦截器时如何将其弹出。

最佳答案

我打算为此悬赏,因为我也有同样的问题。然而......根据source code,拦截器和响应拦截器看起来好像只是数组。 ($httpProvider 工厂中的第 127 行和第 133 行)。对此没有包装。

据我所知,您必须使用 pop() 或任何其他数组方法。然而,这意味着您不知道自己在弹出什么!持有对对象的引用并没有真正的帮助,因为你不能真正对其执行数组函数,除非你决定基于相等进行迭代(这可以工作,使用indexOf或其他类似Underscore的东西)。

实际上,Angular 需要的是一个包装器,因为您无法确定您的拦截器是列表中的最后一个。

关于angularjs - 在 Angular 中禁用/删除 http 拦截器的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21293650/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com