电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

如何在 JavaScript 中使用 Promise.allSettled()

6页
  • 卖家[上传人]:云***
  • 文档编号:358708148
  • 上传时间:2023-08-27
  • 文档格式:DOCX
  • 文档大小:19.05KB
  • / 6 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、你是否曾经在JavaScript中使用过Promise,当有人拒绝了它,一切都被打乱时,你感到很沮丧?你写过基于Promise的代码,一切都很正常,然后一个小小的Promise被拒绝了,整个链条都断了。你的代码戛然而止,你想知道为什么JavaScript不能忽略这个小问题,继续它的快乐之路。这里有一些好消息给你。promise.allSettled()是一个改变游戏规则的工具,它等待所有承诺被解决(解决或拒绝),并允许你对结果采取行动。没有更多的承诺链被打破或被拒绝而不被解决。只有纯粹的、不掺杂任何杂质的幸福承诺。潜心研究这个鲜为人知但非常有用的Promise方法,看看它能在多大程度上简化你的异步JavaScript代码。什么是 Promise.allSettled()?你想要使用 JavaScript 的 Promise.allSettled() 方法,但不太确定它是如何工作的或者为什么要使用它?不用担心,我已经为你提供了保障。Promise.allSettled()等待你给它的所有承诺得到解决,意味着解决或拒绝。然后,它返回一个对象数组,其中包含每个承诺的状态和值或原因。当你希望确

      2、保已完成多个异步任务,但不一定关心其中某些任务是否失败时,这非常有用。例如,假设你有三个返回 Promise 的 API 调用,并且你希望从成功的调用中获取所有数据,即使其中一个调用失败。你可以这样做:Promise.allSettled(apiCall1(), apiCall2(), apiCall3().then(results) = );这将运行所有三个 API 调用,并且.then()在它们全部解决后将调用回调。结果数组将包含三个对象:每个承诺一个,其状态为“已完成”和数据,或者“已拒绝”和错误。我们可以过滤以获取成功的调用,然后继续使用该数据。要记住的关键事项是: Promise.allSettled()等待所有输入承诺解决并返回其结果。 已解决意味着已解决(已实现)或已拒绝。 它返回一个对象数组,其中包含每个输入承诺的状态和值/原因。 即使有人拒绝,它也允许处理成功的承诺。问题与Promise.all()解决方案Promise.allSettled()Promise.all()当你想要等待多个 Promise 完成并获取所有已解析值的数组时,这非常有用。但它有一个主要缺点:

      3、如果任何一个承诺被拒绝,整个Promise.all()承诺都会立即被拒绝。在某些情况下这可能会出现问题。例如,假设你向三个不同的后端服务发出请求,只要其他两个服务成功,你并不真正关心其中一个是否失败。使用 时Promise.all(),单个被拒绝的 Promise 将拒绝整个组,并且你会错过其他 Promise 的成功响应。幸运的是,有一个简单的解决方案:Promise.allSettled()。其工作原理与此类似,Promise.all()但如果任何 Promise 拒绝,它不会立即拒绝,而是等待所有 Promise 解决(解决或拒绝),然后返回一个对象数组,其中包含每个 Promise 的状态和值/原因。例如:Promise.allSettled( Promise.resolve(1), Promise.reject(new Error(2), Promise.resolve(3),).then(results) = / results is an array of: / status: fulfilled, value: 1 / status: rejected, reason:

      4、 Error / status: fulfilled, value: 3);正如你所看到的,即使第二个承诺被拒绝,我们仍然从其他承诺中获得解析值。这使你能够优雅地处理拒绝,而不会错过任何成功的回复。Promise.allSettled()在这些类型的情况下提供了更大的灵活性。你可以全面了解所有承诺,无论是否有一些拒绝,因此你仍然有机会利用任何已解决的值并适当处理拒绝。因此,下次当你需要等待多个 Promise 但又不能因为拒绝而错过任何已解决的值时,请务必使用Promise.allSettled()!这是对Promise API 的一个非常有用的补充。常见问题Promise.allSettled()会Promise.allSettled()减慢我的代码速度吗?并不真地。Promise.allSettled()只需等待你传递给它的所有承诺通过履行或拒绝来解决。它不会做任何其他会影响性能的事情。我还能发现错误吗Promise.allSettled()?是的,你绝对可以!Promise.allSettled()将为你提供每个承诺的结果,无论是履行还是拒绝。对于任何被拒绝的 Promise,你

      5、都会得到拒绝的原因,通常是错误。.catch()你可以在调用的处理程序中捕获这些错误Promise.allSettled()。我什么时候应该使用Promise.allSettled()vsPromise.all()?Promise.allSettled()当你想要并行运行多个 Promise,但不希望单个被拒绝的 Promise 导致整个组拒绝时使用。例如,如果你从多个第三方 API 获取数据,则一个 API 被拒绝的承诺不应阻止你从其他 API 获取数据。Promise.all()当你想要并行运行 Promise 但需要它们全部成功完成才能使代码继续运行时使用。例如,如果你需要从两个 API 获取数据以在页面上显示,则你希望在呈现数据之前满足这两个承诺。我能得到已达成的承诺的结果吗?是的!Promise.allSettled()返回一个对象数组,其中包含每个承诺的状态和值/原因。例如:Promise.allSettled( Promise.resolve(1), Promise.reject(new Error(2), Promise.resolve(3),).then(results) = console.log(results); /* status: fulfilled, value: 1 , status: rejected, reason: Error: 2 , status: fulfilled, value: 3 */);你将获得有关所有承诺的信息,无论它们是履行还是拒绝,因此你可以全面了解并行操作。结论所以你有它。Promise.allSettled()这是一种你从来不知道自己需要的便捷方法。你不再需要仅用Promise.all()try/catch 来处理潜在的拒绝。你可以让Promise.allSettled()为你处理所有这些事情,而只关注已解决的值。你的异步代码将更加干净且易于阅读。

      《如何在 JavaScript 中使用 Promise.allSettled()》由会员云***分享,可在线阅读,更多相关《如何在 JavaScript 中使用 Promise.allSettled()》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.