Promise.all() 被拒绝后的值,显示 [''PromiseStatus'']:如果存在 catch 块,则已解决

2023-11-27

我有两个承诺,一个被拒绝,另一个被解决。 Promise.all 被调用。当其中一个承诺被拒绝时,它执行了 Promise.all 的 catch 块。

const promise1 = Promise.resolve('Promise 1 Resolved');
const promise2 = Promise.reject('Promise 2 Rejected');

const promise3 = Promise.all([promise1, promise2])
  .then(data => {
    console.log('Promise.all Resolved', data);
  })
  .catch(error => {
    console.log('Promise.all REJECTED', error);
  })
setTimeout(() => {
  console.log(promise1, promise2, promise3)
}, 200);

enter image description here

如果我没有对 Promise.all() 进行捕获,则该值仍为 Rejected,即

const promise3 = Promise.all([promise1, promise2])
  .then(data => {
    console.log('Promise.all Resolved', data);
  })

我是否遗漏了一些关于承诺的事情?


我看到了它的答案,但我想我可以澄清一点。

请记住,每个then() or catch()返回一个Promise。 (如果你没有明确的return在回调中,两者都会返回Promise.resolve(undefined))。因此,在 Promise 解决之后,整个 Promise 链的值将是最后一个返回的 Promisethen(); 例子:

promise = Promise.resolve(1)
    .then(() => Promise.resolve(2))
    .then(() => Promise.resolve(3));
console.log(promise);
setTimeout(() => {
    console.log(promise)//Promise {<resolved>: 3}
}, 0)

catch()工作原理完全一样then()。唯一的区别是它调用rejected承诺而不是resolved。 在下面的例子中,我只是替换所有resolve by reject来证明这一点。

promise = Promise.reject(1)
    .catch(() => Promise.reject(2))
    .catch(() => Promise.reject(3));
console.log(promise);
setTimeout(() => {
    console.log(promise)//Promise {<rejectd>: 3}
}, 0)

现在回答你的问题。的价值Promise.all()是一个被拒绝的承诺,因为数组中的承诺之一被拒绝。如果链中有一个 catch 块,控制权将转到该块catch块将返回一个Promise.resolve(undefined)。如果链中没有 catch 块,您将得到您所拥有的:被拒绝的承诺。

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

Promise.all() 被拒绝后的值,显示 [''PromiseStatus'']:如果存在 catch 块,则已解决 的相关文章

  • Angular 4 过滤器搜索自定义管道

    所以我试图构建一个自定义管道来在 ngFor 循环中执行多个值的搜索过滤器 我花了几个小时寻找一个好的工作示例 其中大多数都是基于以前的版本 并且似乎不起作用 所以我正在构建管道并使用控制台为我提供值 但是 我似乎无法显示输入文本 以下是我
  • 如果没有“new”,则无法调用类构造函数

    感谢这个问题已经被问过几次了 但是我遇到的几乎所有情况都是有人试图扩展非本地类的情况 我的情况有所不同 我有一个非常简单的基类 名为CObject如下 export class CObject extends BaseObject cons
  • Eslint 从另一个文件确定全局变量

    我试图以这样的方式设置 ESLint 使其在对实际目标文件进行 linting 之前解析全局声明文件 这样我就不必将所有确实是全局的函数和变量声明为全局 而是让解析器弄清楚 In 一些 模块 js function do something
  • 如何在 DOM 中的每个元素中调用函数,即使它们是动态创建的

    我想对 DOM 上的特定元素调用函数 例如 red css backgroundColor pink 它适用于 DOM 中已经存在的任何元素 但我也希望在动态添加到 DOM 的元素中调用此方法 我尝试过类似的事情 red on functi
  • 在随机位置启动 HTML5

    我有一个大约 2 小时长的音轨 我想在我的网站上使用它 我希望它在页面加载时在随机位置开始播放曲目 使用 HTML5 可以吗 我知道您可以使用 element currentTime 函数来获取当前位置 但是如何在完全下载之前获取曲目的总时
  • 在 R 传单中添加不透明度滑块

    如何在 R leaflet 应用程序中添加滑块来控制特定图层的不透明度 对于这个应用程序 我不想使用闪亮 这里建议 在 R 传单应用程序中添加滑块 https stackoverflow com questions 37682619 add
  • 如何立即启动setInterval循环? [复制]

    这个问题在这里已经有答案了 在一个简单的setInterval setInterval function Do something every 9 seconds 9000 第一个动作将在 9 秒后发生 t 9s 如何强制循环立即执行第一个
  • 如何使 d3 饼图响应式?

    我有一个 PIE 图表 它工作正常 但我无法使其具有响应能力和可调整大小 我需要它与移动浏览器和 iPad 等兼容 div div
  • 设置双指缩放时精确的滚动位置

    我正在创建一个地图应用程序 它将标记图像放置在画布上并滚动到它 我正在使用浏览器的捏缩放和滚动来放大 缩小地图 然而 我注意到有一些奇怪的行为 我想知道如何解决它 这有点难以解释 但我们开始吧 假设您处于网页的标准缩放级别 无法进一步缩小
  • jQuery输入文件点击方法和IE上拒绝访问

    我尝试仅使用一个按钮作为输入文件 它在 Firefox Chrome Safari 中工作正常 但在 IE 中不行 提交表单时我总是收到 访问被拒绝 的消息 代码 input file click 有真正的解决方法吗 我在谷歌上浪费了大约2
  • 如何在 select 和 option 标签中添加 JSON 数据?

    我有这个html代码 div class searchfilter div class searchwrapper div div
  • JavaScript 将键添加到数组中的每个值

    我下面有这个数组 它由一个简单的数组组成 我想要完成的是放一把钥匙id在每个数组值前面以实现类似的效果 id a id b id c id d 有没有一种简单的方法可以做到这一点 任何帮助将不胜感激 谢谢 var test a b c d
  • 如何在 React Native 上显示 SVG 文件?

    我想显示 svg 文件 我有一堆 svg 图像 但我找不到显示的方式 我尝试使用Image and Use的组成部分反应本机 svg https github com magicismight react native svg但他们不这样做
  • 检索 css3 缩放元素的宽度/高度

    我正在与 offsetWidth 属性的奇怪之处 我认为 作斗争 这是场景 比方说 我有一个span标签 在我的js中 在某个时刻我执行css3转换 对于这个元素 例如 el set styles transform scale scale
  • JavaScript中如何确保输入的值是数字而不是字符串?

    我创建了这个函数 function num var x prompt please enter your first number var y prompt please enter your second number if isNaN
  • 为什么在 JavaScript 中 if([]) 被验证而 [] == false ?

    if false alert empty array is false alert alert 0 if alert empty array is true 他们都会运行警报 Demo http jsfiddle net roine ZFD
  • 如何使用 window.onerror 捕获所有 javascript 错误? (包括道场)

    这个问题是后续问题javascript 如何在弹出警报中显示脚本错误 https stackoverflow com questions 2604976 javascript how to display script errors in
  • 类中可以有生成器 getter 吗?

    我的意思是吸气剂是发电机 我相信这一切都是 ES6 也许像这样 class a get count let i 10 while i yield i let b new a for const i of b count console lo
  • Javascript 浮点乘以 100 仍然有错误

    我有一个货币字段的文本输入 我在字段中输入 33 91 并在尝试使用 乘以 100 技术时得到以下结果 var curWth parseInt trans withdraw index val 100 3390 var curWth par
  • 如何映射轮播的子项数组?

    我正在尝试将 Carousel 组件包装在映射对象数组周围作为组件的子级 目前我只能让映射创建映射对象的 1 个子对象 轮播需要像这样

随机推荐

  • 如何避免 HTML5 Canvas 中的多边形边缘缝合伪影?

    我为 OpenHeatMap 开源项目维护并行 Flash 和 HTML5 Canvas 渲染器 我受到两个版本之间带有分数坐标的填充多边形渲染不一致的困扰 如果渲染共享一条边的两个多边形 Canvas 将沿该边显示可见的连接 而 Flas
  • ViewExpiredException:找不到已保存的视图状态:在 JSF 中提交表单时

    我在尝试提交表单时遇到以下异常 javax faces application ViewExpiredException page1 xhtml No saved view state could be found for the view
  • 在Ubuntu上的QT5中将透明的QWidget放在QMediaView之上

    Goal 我希望基于 QT5 的 GUI 的背景是正在播放的视频文件 我还希望能够以透明度设置 GUI 组件的样式 以便视频能够透过它们显示 我不确定这是否有可能实现 可能是我刚刚错过了一个重要的线索 我毕竟是 Qt 初学者 也可能是它根本
  • Node.js读取USB端口信号

    我已经安装了串行端口使用 npm 的 Node js 模块 npm install serialport 现在我想通过计算机的 USB 端口从 Android 手机向节点应用程序发送一些消息 假设节点可以读取串行端口信号 以前有人这样做过吗
  • 如何在WinDbg中设置符号?

    我在用Windows 调试工具启动 WinDbg cdb 或 ntsd 时收到以下错误消息 Symbol search path is Invalid Symbol loading may be unreliable without a s
  • 使用 Google Apps 脚本获取工作表单元格注释值

    有没有办法获取单元格注释的值并将其显示在旁边的单元格中 我有一个 C 列 其中一些单元格包含注释 我想获取这些注释值并将每个单元格注释写入 D 列中其旁边的单元格中 例如 如果单元格 C4 有注释 无条目 我想在 D4 中显示 无条目 我今
  • PostgreSQL 转义 JSON 字符串

    我正在尝试使用 PostgreSQL 9 3 中的新 JSON 功能 并且正在寻找一个未转义 JSON 的函数 与 to json anyelement 相反 下面是一个 JSON 示例 single comment Fred said H
  • R 统计:简单列向量的问题

    我在使用从制表符分隔的数据文件导入的数据时遇到问题read delim 大多数列都包含我需要执行的数字数据t test为了 不幸的是我总是收到这个错误 Error in if stderr lt 10 Machine double eps
  • 通过readinto()将二进制数据解析为ctypes结构对象

    我正在尝试处理二进制格式 按照此处的示例 http dabeaz blogspot jp 2009 08 python binary io handling html gt gt gt from ctypes import gt gt gt
  • 在关闭警告中访问 foreach 变量

    我收到以下警告 访问闭包中的 foreach 变量 使用不同版本的编译器编译时可能有不同的行为 这就是我的编辑器中的样子 我知道如何解决此警告 但我想知道为什么会收到此警告 这是关于 CLR 版本吗 与 IL 有关吗 此警告有两个部分 第一
  • 在 Quartz.Net 中调度相关作业

    我需要一些帮助 我正在尝试弄清楚如何在 Quartz Net 中安排工作 Quartz 中的作业对应于我的 Web 应用程序中的任务 它们都是我的 Web 应用程序中作业的一部分 我希望用户能够按需启动作业 Web应用程序上下文 并使其立即
  • 为什么我在执行 sql 脚本时收到“不一致的结束行”警告窗口?

    当我尝试执行 sql 脚本时 它会出现一个警告窗口 以下文件中的行结尾不一致 是否要 使其正常化 我只是想知道为什么会出现此问题以及如何永久修复它 请帮忙 因为有些行以 CR LF 对结尾 有些行仅以 CR 或 LF 结尾 基本上以某种方式
  • 如何使 sqlalchemy 在反映表时返回 float 而不是 Decimal?

    我有一个在 Python 代码之外定义的 MySQL 数据库 我使用反射将其放入 SQLAlchemy 因此我没有任何可以修改的类定义 我不必担心失去精度 并且我对 Python 中的结果进行了一些算术运算 因此我宁愿不必手动将一堆值转换为
  • 为什么可变参数模板构造函数比复制构造函数更匹配?

    以下代码无法编译 include
  • Django 的 I18N 与第三方应用程序

    我有一个 Django 项目 它使用django tagging并且应该以德语运行 所以我查看了来源并发现django tagging确实使用gettext lazy因此是完全可翻译的 但是 包中没有可用的翻译 所以我认为必须有一种方法可以
  • 结合 R Markdown 和动画包

    有没有办法结合起来animation package和 r 降价 我想生成动画 我想在从 r markdown 生成的 html 文件中包含和描述该动画 当然我可以嵌入代码saveHTML or saveGIF文件已生成的 r markdo
  • Windows 中 TEMP 目录的限制?

    我有一个用 Python 编写的应用程序 它将大量数据写入 TEMP 文件夹 奇怪的是 每隔一段时间 它就会死去 然后回来IOError Errno 28 No space left on device 该驱动器有plenty的自由空间 T
  • 在 Linux 上通过 jenkins 运行 angular2 测试时出现 Karma 错误

    使用 karma 和 jenkins 运行我的 angular2 单元测试时 我看到以下错误 当我在本地计算机 Windows 上运行测试时 我的测试运行良好 但是当在 Linux 上通过 jenkins 运行测试时 我收到以下错误 Mis
  • 如何在WPF MVVM中调用窗口的Loaded事件?

    从我的 OnLoaded 事件创建命令很容易 处理程序代码 但如何从视图中调用它 从此不再切蛋糕 它调用 xaml cs 中的代码 我将如何创建一个 ICommand 相等的 您可以通过附加行为来完成此类事情 为了节省一些时间 看看 Mar
  • Promise.all() 被拒绝后的值,显示 [''PromiseStatus'']:如果存在 catch 块,则已解决

    我有两个承诺 一个被拒绝 另一个被解决 Promise all 被调用 当其中一个承诺被拒绝时 它执行了 Promise all 的 catch 块 const promise1 Promise resolve Promise 1 Reso