使用 HttpInterceptor 的 Angular 1.5 超时

2023-11-30

All,

我正在尝试设置一个全局 httpInterceptor,以便在出现客户端超时(而不是服务器超时)时显示自定义弹出消息。我找到了这篇文章:Angular $http:在“超时”配置上设置承诺,并将其转换为 httpInterceptor,但它没有按预期工作,并且有一些奇怪的行为。

 $provide.factory('timeoutHttpInterceptor', function ($q, $translate, $injector) {

        var timeout = $q.defer();

        var timedOut = false;

        setTimeout(function () {
            timedOut = true;
            timeout.resolve();
        }, 10000);
        return {
            request: function (config) {
                config.timeout = timeout.promise;
                return config;
            },
            response: function(response) {
                return response;
            },
            responseError: function (config) {
                if(timedOut) {
                    var toastr = $injector.get('toastr');
                    toastr.custom('network', $translate('title'), $translate('label'), { timeOut: 5000000000000, closeButton: true, closeHtml: '<button></button>' });
                    return $q.reject({
                        error: 'timeout',
                        message: 'Request took longer than 1 second(s).'
                    });
                }
            },
        };
    });

您可以使用$timeout返回承诺并将其分配给的服务config.timeout。看看下面的代码。

.factory('timeoutInterceptor', ['$q','$timeout', function($q,$timeout) {
    return {
      request: function(config) {
        //assign a promise with a timeout, and set timedOut flag, no need to trigger $digest, thus false as 3rd param
        config.timeout = $timeout(function(){ config.timedOut = true },2000,false);
        return config;
      },
      responseError :function(rejection) {
        if(rejection.config.timedOut){ //if rejected because of the timeout - show a popup 
            alert('Request took longer than 1 second(s).');
        }
        return $q.reject(rejection);
      }
    };

这是完整的工作示例:http://jsfiddle.net/2g1y4bk9/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 HttpInterceptor 的 Angular 1.5 超时 的相关文章

  • 为什么我的事件处理程序会导致“不是函数”错误,但可以在 Firebug 控制台中运行?

    使用JQuery 1 2 6 在Firefox 3和IE7上进行测试 我有一些非常基本的 JavaScript 代码来重新加载验证码图像 在我的 JS 文件中 我有 var Captcha count 0 Refresh function
  • 使用非常大的背景位置偏移是否存在性能问题?

    我正在构建一个进度条控件 并且正在研究它实际上并不显示进度 而只是旋转 正在发生某事 的指示器的情况 我的设计基本上是交替的对角条纹 本质上是一个像这样的理发杆 但是 旋转 由于希望将尽可能多的负载转移给渲染引擎 我想为此使用 CSS 过渡
  • Javascript:使用 IIFE 和块语句之间的区别

    IIFE主要用于封装作用域 function let myVar 10 not global 但为什么不直接使用块语句呢 let myVar 10 also not global 除了范围封装之外 进一步使用 IIFE 是否还有其他好处 块
  • D3更新circle-pack数据新节点与现有节点重叠

    我正在关注一般更新模式 http bl ocks org mbostock 3808234但在分层方面存在问题 使用圆形包装布局 我pack新数据 update enter and exit圆形元素 然而 当新元素enter 它们重叠upd
  • 如何使传单圆圈标记可拖动?

    使用传单 我创建了一个L circleMarker我希望它是可拖动的 var marker L circleMarker new L LatLng 48 94603 2 25912 draggable true bindPopup Circ
  • CryptoJS 使用密码加密 AES,但 PHP 解密需要密钥

    我在用CryptoJS https code google com p crypto js AES加密字符串 function doHash msg msg String msg var passphrase aggourakia var
  • 每n秒执行一次函数

    我制作了这个在 10 秒后点击链接的代码片段 function timeout window setTimeout function img left click 1000 setTimeout timeout 1000 timeout 我
  • JavaScript 可以检测用户的浏览器是否支持 gzip 吗?

    我可以使用 JavaScript 来检测用户的浏览器是否支持 gzip 压缩内容 客户端 而不是 Node js 或类似内容 我正在尝试支持以下边缘情况 有很多可能的文件可以加载到特定的 Web 应用程序上 最好在应用程序运行时根据需要加载
  • 个人 Tumblr 帖子上的 Javascript

    我知道您可以编辑在 tumblr 博客上呈现所有帖子博客主页的 html AngularJS 但是 有什么办法可以添加自定义到各个帖子 我想在逐个帖子的基础上做一些 javascript 的东西 但似乎无法找到可以编辑代码的位置 或者 如果
  • 为什么 Angular (1.5) 组件总是有一个隔离的范围?

    我正在构建一个 Angular 库 它提供了一堆组件 这些组件应该可以更轻松地在特定 API 之上构建 SPA 应用程序 对于某些组件 我们使用多槽嵌入功能 AngularJS 1 5 版本中引入了多槽嵌入和组件 我真的很喜欢这两个功能 但
  • 只保留 A-Z 0-9 并使用 javascript 从字符串中删除其他字符

    我正在尝试验证字符串以使它们成为有效的网址 我只需要保留 A Z 0 9 并使用以下命令从字符串中删除其他字符javascript or jquery 例如 贝儿餐厅 我需要将其转换为 百丽餐厅 所以字符被删除 只保留 A Z a z 0
  • Angular 2 将字符串转换为 md5 哈希

    我找到了ts md5 https www npmjs com package ts md5包 但在示例中它有一个hashStr方法 但现在不行了 类型上不存在属性 hashStr Md5 使用该错误后 该错误会记录在我的控制台中 我怎样才能
  • 在 Chrome 开发者工具中禁用调试器语句

    我正在尝试对恶意 JavaScript 进行逆向工程 当我最初加载侧面时 会注入 JS 代码 其中包括 debugger 语句并将断点注入我的 chrome 开发人员控制台 通过stackoverflow阅读 禁用所有断点does not帮
  • 使用 nockjs 和 jest 进行 Promise/异步单元测试的代码覆盖率问题

    我使用 NockJS 和 Jest 为 React 应用程序编写了一个简单的 API 调用单元测试 如下所示 AjaxService js export const AjaxService post url data headers gt
  • Javascript等待/异步执行顺序

    所以我试图把我的头脑集中在 Promise await async 上 我不明白为什么当 go 执行时 带有 finished 的警报会紧随 console log coffee 之后 当所有函数都使用等待 承诺时 为什么它只等待 getC
  • 什么时候可以使用Javascript,什么时候不可以?

    不使用太多 javascript jquery 是个好习惯吗 我们应该尽可能避免它 为了良好的可访问性 吗 什么时候可以使用 JavaScript 什么时候不能在网页设计和开发中使用 JavaScript 在什么场景 什么条件下 Updat
  • 离子初始加载时间

    我正在使用 Ionic 构建一个简单的应用程序 但我的应用程序在冷启动时的初始加载时间方面存在性能问题 这是我所做的 collection repeat 代替带有 track by 的 ng repeat 原生滚动 overflow scr
  • 如何使用 fetch() 和 WhatWG 流获取文件上传进度

    注意 我并不是在寻找任何替代方案 我知道这可以通过 XMLHttpRequest 来完成 我也不关心浏览器支持 我只想了解新的 即将推出的标准 我有一个File https developer mozilla org en US docs
  • Typescript 中的 Angular 服务具有依赖注入和缩小功能

    我现在正在努力让我的头脑围绕 Angularjs 我目前正在寻找服务 我也使用打字稿来编写代码 现在 从网络上的示例中 我看到人们在打字稿中使用如下所示的服务 class Service constructor private http n
  • VS Code 扩展 - 获取完整路径

    我正在为 VS Code 编写一个插件 我需要知道调用扩展的文件的路径 无论是从编辑器上下文菜单或资源管理器上下文菜单调用还是用户只需键入扩展命令 function activate context get full path of the

随机推荐

  • 使用 XOR 实现 OR,AND

    我想知道我是否可以实施or and函数仅使用xor 我认为这是不可能的 但我需要证明这一点 有任何想法吗 提前致谢 您不能仅使用 XOR 来实现 OR 或 AND 门 因为它不是通用门 此外 XOR 函数无法区分其输入处的 1 1 和 0
  • 在 AngularJS 中将货币从美国转换为英国

    我尝试显示此代码 但我需要 AngularJS 自动转换货币 div default currency symbol 0 00 currency custom currency symbol 0 00 currency div 正如 And
  • LuaSocket (UDP) 未接收数据报

    我正在为我正在进行的项目尝试 LuaSocket 我选择 UDP 作为我的协议 在网上寻找文档和教程 我尝试创建一个客户端 服务器对以进行测试和学习 根据我所读到的内容 以下代码应该可以工作 然而 只有服务器似乎工作正常 客户端发送消息 但
  • C++ 继承 - 无法访问基点?

    我似乎无法使用基类作为函数参数 我是否搞乱了继承 我的主要内容如下 int some ftn Foo f some code Bar b some ftn b Bar 类以这样的方式继承自 Foo class Bar Foo public
  • Instagram API - 如何检索用户在 Instagram 上关注的人员列表

    我想知道如何检索用户在 Instagram 上关注的人员列表 假设这个特定用户是我关注的人 所以我可以在 Instagram 应用程序上访问他 她的照片和他的关注者 如何使用 Instagram API 来执行此操作 这样做合法吗 进一步开
  • 在 Powershell 中确定不同时区的夏令时状态

    PowerShell 中是否有一种巧妙的方法来确定另一个时区的过去日期是否是夏令时 情况是这样的 我们的数据库位于欧洲 时间和日期是该服务器本地的 由于欧洲和美国在不同时间开始和停止 DST 因此我需要考虑这些时间的时差 谢谢你的建议 无需
  • 如何立即停止使用 ExecutorService 启动的任务?

    我尝试了许多不同的方法来立即停止使用 ExecutorService 启动的任务 但没有成功 Future
  • 修复内存泄漏

    我最近发现Delphi有一个名为ReportMemoryLeaksOnShutdown的全局变量 当设置为True时 将在应用程序关闭时检测内存泄漏 我通过阅读另一个相关问题的一些评论发现了这些信息 Delphi中检测内存泄漏的最佳工具是什
  • 自动增量不起作用

    我想创建一个表 其中包含 1 个预定义行 因此 我在 onCreate 中添加该行 以下是我的代码 private static final String CREATE CATEGORY TABLE CREATE TABLE CATEGOR
  • 当背景图像应延伸页面的整个长度时,页面右侧会出现空白[关闭]

    Closed 这个问题需要调试细节 目前不接受答案 我们的网页背景图像在 iPad iPhone 上的 FireFox 和 iOS 中的 Safari 中出现问题 页面右侧出现空白 背景图像在其他浏览器上可以很好地扩展 但我们很难在这些浏览
  • JavaScript OOP 与 jQuery

    我有对象myObject 里面我有函数execute 里面我有 ajax 其中有complete function xmlHttp 在该函数内部我想调用 setResult 它是在myObject 怎么做 function myObject
  • 文件存在并且是目录,但 listFiles() 返回 null

    的文档File listFiles 建议null仅当调用它的文件不是目录时才会返回 我有以下内容 String dir storage emulated 0 File f new File dir Log v Files f exists
  • jQuery 点击在 iOS 中不起作用?

    我在网站中添加了一些简单的 JavaScript jQuery document click function alert click 并且只有当有人点击实际的锚元素 按钮元素或带有cursor pointer CSS 具体来说 我在 Bo
  • 通过自定义 URL 方案启动 Blackberry 应用程序

    我正在研究 RIM HttpFilterRegistry 部分 任何人都可以解释如何使用 UI 入口点在本机应用程序中嵌入 协议和 packageManager 类 要求 当选择来自 BB 浏览器的 URL 时启动本机第 3 方应用程序 如
  • HTTP1.1 到 HTTP/2:标头怎么样?

    在 HTTP 1 1 中 状态行是 scheme version code reason HTTP 1 1 200 OK 我在 HPACK 规范中看到 scheme 和 status 标头 但是我没有看到任何版本或原因 难道就没有一个吗 在
  • 如何让 jquery 在循环中的每个 ajax 调用之后立即附加输出

    我想附加到一个元素并立即更新它 console log 按预期显示数据 但append 在 for 循环完成之前不执行任何操作 然后立即将其全部写入 索引 html p Page loaded p p Data p div div test
  • Python Beautiful Soup .content 属性

    BeautifulSoup content 有什么作用 我正在努力通过crummy com 的教程 我不太明白 content 的作用 我查看了论坛 但没有看到任何答案 看看下面的代码 from BeautifulSoup import B
  • 在从简单的 spring mvc json 服务输出之前,我得到了一个额外的空 {} json 对象以及 &&

    好的 我有一个基于 spring mvc 的 json Web 服务 这是一个测试应用程序 我在构建基于 spring mvc 的 Restful json 服务时从未见过这样的问题 我的测试服务的输出始终返回空 json 对象 后跟 后跟
  • Apache Tika 如何提取没有页眉和页脚内容的 html 正文

    我希望提取除页眉和页脚之外的 html 的整个正文内容 但是我遇到了异常 org xml sax SAXException 命名空间http www w3 org 1999 xhtml未申报 下面是我如上所述创建的代码at import o
  • 使用 HttpInterceptor 的 Angular 1.5 超时

    All 我正在尝试设置一个全局 httpInterceptor 以便在出现客户端超时 而不是服务器超时 时显示自定义弹出消息 我找到了这篇文章 Angular http 在 超时 配置上设置承诺 并将其转换为 httpInterceptor