Promise 和通用 .catch() 语句

2023-11-26

我正在为我的系统编写一个 API,它将 XHR 发送到服务器并返回一个应由调用者处理的承诺 - 到目前为止一切顺利。

对于每个 API 调用,我必须使用.then and .catch调用,但通常(大约 75% 的时间).catch引用相同的功能,只需使用console.error.

我的问题是 -有没有办法为我创建的每个承诺附加默认的 catch 语句?(假设打印到控制台),对于我想进一步处理拒绝的每个承诺,我会添加另一个.catch调用(甚至覆盖它)?

每个调用都有自己的 .catch 的简化示例:http://jsbin.com/waqufapide/edit?js,控制台

尝试实现所需行为的非工作版本:http://jsbin.com/nogidugiso/2/edit?js,控制台

在第二个示例中,不只是返回deferred.promise,我返回一个带有附件的承诺catch()处理程序:

return deferred.promise.catch(function (error) {
  console.error(error);
});

Both then抓住并then在这种情况下会调用函数。

我确实意识到 Q 暴露了getUnhandledReasons()功能和onerror事件,但我真的不想使用.done()对于每个承诺,也没有建立某种计时器/间隔来处理未处理的拒绝列表。

其他库(例如 bluebird 也公开)onPossiblyUnhandledRejectionevents,我不得不承认这是一个更好的解决方案,但仍然不是我想要的。


我认为您想要做的就是在记录异常后重新抛出异常,以便其他处理程序能够正确处理它:

return deferred.promise.catch(function (error) {
  console.error(error);
  throw e; // rethrow the promise
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Promise 和通用 .catch() 语句 的相关文章

  • jQuery mobile 中的文本区域高度和宽度?

    我修复了 jQuery mobile 中文本区域元素的高度 并且在纵向中得到了完美的高度和宽度 但在横向中宽度没有放大 谁能帮我 提前致谢 HTML
  • 可能未处理的承诺拒绝(id 0)类型错误 GET 或 HEAD 请求不允许主体

    import React from react import FlatList ActivityIndicator Text View from react native export default class FetchExample
  • 使用本地存储在从另一个表保存的 HTML TABLE 中打印 JSON,以便我在另一个页面上打印我的表

    在我的作业中 我必须使用用户输入中的数据并将数据保存在本地存储中 我必须以水平表格式将这些数据从本地存储打印到其他页面 为此 我编写了用于用户输入并将数据保存在本地存储中的代码 div p p div
  • Jquery 悬停卡

    我在用着http designwithpc com Plugins Hovercard http designwithpc com Plugins Hovercard 但我不知道如何在悬停卡上声明 var 每个工作描述都有自己的 ID 当悬
  • 浏览器视口大小(以设备像素为单位)

    Goal 我希望 Flash 能够获得有关浏览器视口宽度和高度 以设备像素为单位 的准确信息初始化 调整大小或浏览器缩放事件时 规格 我需要将 flash 嵌入到在 chrome safari firefox 等中运行的 html 页面中
  • 从函数返回函数的目的是什么?

    阅读一些遗留代码 发现 A prototype setSize function var v1 new Vector2 return function size var halfSize v1 copy size multiplyScala
  • 在版本 4.4.6 中禁用 ckeditor 上下文菜单

    我在 Rails4 项目中使用 ckeditor 我尝试了 ckeditor gem 和 ckeditor rails gem 来提供 ckeditor 库 这里有多个帖子 人们希望删除 ckeditor 上下文菜单 以便可以显示本机浏览器
  • 如何使用有角度的材料创建卡片网格?

    我正在尝试使用 ng repeat 创建每行三张卡片的网格 我有一个普通的 javascript 对象数组附加到范围 下面的代码将为每张卡创建一个新行 div div
  • 为什么 window 与 Internet Explorer 中的 window.self 不同?

    关于我如何遇到这个问题有一个复杂的背景故事 但为什么self属性不完全等于窗口本身 在 Safari 和 Firefox 及其朋友中 结果如我所料 gt window window self true gt window window se
  • 想要动态处理与分页相关的页码显示:ReactJS

    我有一些分页逻辑工作得很好 唯一的问题是我只能让它显示并固定数量的页面可供选择 现在我已经把它放到了 5 页 但我希望它能够根据总记录动态更改 假设我有 100 条记录 每页限制为 10 条 将有 10 页 现在我只能让它以这种方式显示 第
  • 本地推送通知到在应用程序内运行 JS 代码的 Win8 Live Tile

    我正在尝试将更新发送到我的应用程序的磁贴 当应用程序运行时 这可以正常工作 例如 当用户单击按钮时 我可以轻松地将磁贴更新通知发送到磁贴 我无法解决的是当应用程序无法运行时如何更新磁贴 我找到的唯一选择是使用以下命令从远程 Web 服务器拉
  • JavaScript 继承;调用和原型

    要在Javascript中实现继承 通常需要执行以下两个步骤 假设我有一个基类 Animal var Animal function name this name name 我现在想从中派生一个子类 Dog 所以我想说 var Dog fu
  • React Router v4 不渲染组件

    React Router v4 渲染组件存在问题 在应用程序初始加载时 它将呈现与 URL 相对应的正确组件 但是 任何后续的组件Link单击不会呈现所需的组件 图书馆 反应路由器 4 2 2 https reacttraining com
  • JavaScript推送函数中的动态变量

    我在 JavaScript 中使用推送功能 var chartData for var i 0 i lt 3 i chartData push date new Date year s mon s date s hr s min s sec
  • 如何使用角度材料在具有可扩展行的表格中创建嵌套垫表

    我有以下数据 id c9d5ab1a subdomain wing domain aircraft part id c9d5ab1a info mimetype application json info dependent parent
  • onclick 事件中未调用函数

    我想在每个 YouTube 链接的末尾添加一些 HTML 以在 litebox 中打开播放器 到目前为止 这是我的代码 document ready function var valid url new RegExp youtube com
  • 使用 Enzyme 测试 `React.createRef` api

    我想测试下面的类 它使用React createRef api 不过 快速搜索并没有发现任何这样做的例子 有人成功过吗 我该如何嘲笑裁判 理想情况下我想使用shallow class Main extends React Component
  • 什么是 WKWebView 中的 WKErrorDomain 错误 4

    fatal error LPWebView encounters an error Error Domain WKErrorDomain Code 4 A JavaScript exception occurred UserInfo 0x7
  • 测量窗口偏移

    有没有一种方法可以测量 jQuery 中窗口的偏移量 以便我可以比较 固定 元素和相对定位元素的位置 我需要能够知道窗口滚动了多远 以便我可以使用该图来计算固定元素的高度 相对于视口顶部 和相对对象的高度 相对于顶部 之间的差异文件的内容
  • 没有输入的 jQuery 日期选择器

    我有一个相当复杂的网络应用程序 我想向其中添加一些日期选择 UI 我遇到的问题是我无法从文档中弄清楚如何真正控制日期选择器的出现方式和时间 不涉及任何表单元素 不 我不会添加秘密表单字段 因此简单的开箱即用方法根本行不通 我希望有人可以提供

随机推荐

  • Python Inspect.stack 很慢

    我只是在分析我的 Python 程序 看看为什么它看起来相当慢 我发现它的大部分运行时间都花在了inspect stack 方法 用于输出带有模块和行号的调试消息 每次调用 0 005 秒 这看起来相当高 是inspect stack真的这
  • 使用 django 表单保存新的外键

    我有两个模型 class Studio models Model name models CharField Studio max length 30 unique True class Film models Model studio m
  • 在易出错的初始化程序 swift 1.2 中分配 let 变量

    我有一个带有错误初始化程序的结构 不是实例方法 而是初始化程序 更新到 1 2 后 当我尝试分配let初始化程序内的属性 我收到以下错误Cannot assign to aspectRatio in self 我的代码如下 import F
  • 在Python中,如何解码GZIP编码?

    我在 python 脚本中下载了一个网页 在大多数情况下 这工作得很好 然而 这个有一个响应头 GZIP 编码 当我尝试打印这个网页的源代码时 它在我的腻子中包含了所有符号 如何将其解码为常规文本 我使用 zlib 从网络上解压缩 gzip
  • 滑动菜单将触摸事件锁定在上视图上

    我正在尝试使用滑动菜单在我的应用程序中 在我的 Sony Xperia S 上 它工作得非常好 但是当我尝试在 HTC Desire HD 上启动应用程序时 菜单可以通过手势完美打开 但其他触摸事件被阻止并且顶视图 ViewPager 滑动
  • JSON web-api 上公开的对象 - 如何阻止属性名称更改大小写?

    我有一个如下所示的对象模型 public class Product public string ProductCode get set public string ProductInfo get set 我通过 Dapper 填充它 并将
  • 在硬件加速下缩放画布时,偏移路径模糊

    我的应用程序使用可缩放的画布 以便我可以以米而不是像素为单位指定路径点 当我缩放画布时 然后使用画一条线path lineTo 打开硬件加速后 线条变得模糊且偏移 关闭硬件加速或使用硬件加速时不会发生这种情况canvas drawLine
  • 的类型扩展错误' aria-label='Dictionary<'K, 'V> 的类型扩展错误'> Dictionary<'K, 'V> 的类型扩展错误

    以下类型扩展 module Dict open System Collections Generic type Dictionary lt K V gt with member this Difference that Dictionary
  • 如何以编程方式将内容添加到菜单条?

    我想将文本框中写入的任何内容添加到菜单条中 在我的文件 gt 最近搜索中 我怎样才能以编程方式进行 我是否可以动态分配一个事件处理程序 以便当用户单击该子文件夹中的 X 项目时 文本将复制回文本框 编辑 我如何以编程方式调用文件夹 Busq
  • 无法编译QT创建快速应用程序项目

    我是 QT Creator 的新手 我已经安装了 QT Creator 5 6 2 和 MinGW 4 9 2 32 位 我在编译快速应用程序项目时遇到问题 因为它总是显示此错误消息 Could not create directory C
  • Big O 正式定义中的常量

    我正在修改 Big O 和其他相关界限的正式定义 但有些事情让我绊倒了 在我正在读的书中 Skiena Big O 被定义为 f n O g n 当存在常数 c 时 对于 n gt n0 的某个值 f n 始终 这对我来说通常是有意义的 我
  • UITextField 自定义背景视图和移动文本

    我正在尝试使用自定义文本字段背景 问题是文本看起来离 左侧太近 我没有看到任何方法可以在不子类化 UITextField 的情况下移动文本 所以我试图扩展和覆盖 void drawTextInRect CGRect rect NSLog d
  • 在客户端 JavaScript 中访问 Express.js 局部变量

    很好奇我是否做得对 如果不对 你们会如何处理这个问题 我有一个 Jade 模板 需要渲染从 MongoDB 数据库检索的一些数据 并且我还需要访问客户端 JavaScript 文件中的数据 我正在使用 Express js 并将数据发送到
  • Swift:在 IOS13+ 上设置 StatusBar 颜色(使用 statusBarManager)

    我想通过代码定义状态栏的颜色 我发现它是这样的 但它已被弃用 有谁知道这样做的新方法是什么 这个警告在我的所有代码中都跟着我 此代码有效 但有警告 任何想要的人的代码 class AppDelegate UIResponder UIAppl
  • 从另一个类调用方法

    我想知道如何从另一个类调用方法 而不必创建该类的新实例 我查过这个 我看到的 90 的示例都要求我为我引用的类制作一个新副本 像这样的东西 Fooclass test new Fooclass test CallMethod 但是 我想知道
  • 如何在xgboost中获得每棵树的预测?

    使用xgboost Booster predict只能得到所有树的预测结果或者每棵树的预测叶子 但是我怎样才能得到每棵树的预测值呢 截至最近 xgboost引入了切片 API Raul 的答案虽然有效 但过于复杂 要获得单独的预测 您所需要
  • 将 JavaScript 数组的键和值获取到变量中

    我有一个 JavaScript 对象数组 写的时候console log myarry 它将以下面的形式显示在控制台中 Array 2 0 Object one one 1 Object two two length 2 在这个数组中 我的
  • Objective-c:将日期字符串转换为星期几+月份名称

    初学者的问题 但我想知道是否有人可以帮助我解决这个问题 我需要根据包含特定日期的字符串设置四个字符串 例如 Apr 7 2011 表示星期几的字符串 缩写 Mon Tue Wed Thu Fri Sat Sun 例如 Thu 需要一天的字符
  • 如何确定一个对象是否可以 ToString 转换为值或类型名称?

    我正在编写 php 服务和我们的 crm 之间的互操作 我需要做的一件事是确保简单类型被转换为 ToString 以便稍后在 json 转换器中使用 我什至不确定 简单类型 的名称是什么 但它可以这样定义 代表低级变量类型的对象 包含单个值
  • Promise 和通用 .catch() 语句

    我正在为我的系统编写一个 API 它将 XHR 发送到服务器并返回一个应由调用者处理的承诺 到目前为止一切顺利 对于每个 API 调用 我必须使用 then and catch调用 但通常 大约 75 的时间 catch引用相同的功能 只需