将 Fetch API 与 Promise.all 一起使用

2023-11-30

我的目标是从两个 URL 获取数据,并仅在两个 URL 均成功返回时才执行操作。另一方面,如果其中任何一个失败,我想返回错误。我已经尝试了我的代码并设法获得了预期的效果。

我的问题是,是否有更有效、更简洁的方法来实现相同的功能?

辅助函数

let status = (r) => {  
  if (r.ok) {  
    return Promise.resolve(r)  
  } else {  
    return Promise.reject(new Error(r.statusText))  
  }  
}

let json = (r) => r.json();

Requests

let urls = [
    'http://localhost:3000/incomplete',
    'http://localhost:3000/complete'
]

let promises = urls.map(url => {

    return fetch(url)  
    .then(status)  
    .then(json)  
    .then(d => Promise.resolve(d))
    .catch(e => Promise.reject(new Error(e)));

});

Promise.all(promises).then(d => {
    // do stuff with d
}).catch(e => {
    console.log('Whoops something went wrong!', e);
});

// https://jsonplaceholder.typicode.com - Provides test JSON data
var urls = [
  'https://jsonplaceholder.typicode.com/todos/1',
  'https://jsonplaceholder.typicode.com/todos/2',
  'https://jsonplaceholder.typicode.com/posts/1',
  'https://jsonplaceholder.typicode.com/posts/2'
];

// Maps each URL into a fetch() Promise
var requests = urls.map(function(url){
  return fetch(url)
  .then(function(response) {
    // throw "uh oh!";  - test a failure
    return response.json();
  })  
});

// Resolve all the promises
Promise.all(requests)
.then((results) => {
  console.log(JSON.stringify(results, null, 2));
}).catch(function(err) {
  console.log("returns just the 1st failure ...");
  console.log(err);
})
<script src="https://getfirebug.com/firebug-lite-debug.js"></script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Fetch API 与 Promise.all 一起使用 的相关文章

  • 仅当表单已提交时才触发 jQuery 表单验证?

    不引人注目的验证基于这样的想法 don t进行表单验证 直到用户提交表单 一旦发生这种情况 如果表单上的某些内容无效 那么一旦用户更改了每个字段 就会立即验证它 我想做的是 不显眼地 触发表单元素的验证 也就是说 only如果用户已尝试提交
  • HTML/VBA Click 事件未触发

    这是我第一次在 StackOverflow 上发布问题 到目前为止 我已经能够通过 VBA 帮助论坛解决我的大部分问题 我的问题很简单 我有一个自动数据拉取 我需要在其中导出数据 我过去曾在这方面取得过成功 但这次略有不同 我尝试单击以生成
  • VBA / HTML / jQuery 选择自动完成 - 在列表中选择

    我正在尝试使用 Excel 中的 VBA 在网站的列表中选择一个值 这不是一个 正常列表 该网站使用 jQuery 选择自动完成 如下所示 example http davidwalsh name demo jquery chosen ph
  • 如何使用 JavaScript 中的值填充下拉列表?

    我在 Tridion CMS 扩展中的功能区工具栏按钮中添加了一个按钮 单击该按钮后 将显示一个弹出页面 其中包含两个下拉菜单 通过更改第一个下拉控件中的值 我应该填充第二个下拉控件的值 就我而言 我正在使用ASP drop down li
  • Jquery从下拉列表中获取所选值的id

    我有一个下拉列表 可以从数据库获取值 如下所示 get getJobs function jobs seljobs jobs var i 0 jobs forEach function n alert job id n id 32 67 4
  • 动画进度元素值

    我有一个progress元素 该元素如下所示 div class container div div div
  • 如何使用canvas.toDataURL()将画布保存为图像?

    我目前正在构建一个 HTML5 Web 应用程序 Phonegap 本机应用程序 我似乎不知道如何将画布保存为图像canvas toDataURL 有人可以帮我吗 这是代码 有什么问题吗 我的画布被命名为 canvasSignature J
  • Ember.js 处理 View 事件后转换到路由

    Setup 我有一个 Ember 应用程序 支持使用 Imgur API 上传图像 我已经有一个工作路线和模板来处理任何 Imgur ID 但我想在上传新图像后转换到此路线 使用返回的 Imgur ID 这是该应用程序的相关部分 http
  • 检查 touchend 是否在拖动后出现

    我有一些代码可以更改表的类 在手机上 有时表格对于屏幕来说太宽 用户将拖动 滚动来查看内容 但是 当他们触摸并拖动表格时 每次拖动都会触发 touchend 如何测试触摸端是否是触摸拖动的结果 我尝试跟踪dragstart和dragend
  • Node.js - console.log 不显示数组中的项目,而是显示 [Object]

    我在注销对象内数组的内容时遇到问题 实际的物体看起来像这样 var stuff accepted item1 item2 rejected response Foo envelope from The sender to new item1
  • 如何在 Angular 中从父组件访问子组件?

    I have mat paginator在子组件a中 如下所示 子组件 html
  • 使用 JS 合并具有相同值的相邻 HTML 表格单元格

    我已经为此苦苦挣扎了一段时间 我有一个根据一些 JSON 数据自动生成的表 该数据可能会有所不同 我想合并第一列中具有相同值的相邻单元格 例如此表中的 鱼 和 鸟 table tr td fish td td salmon td tr tr
  • JS用正则表达式替换数字

    我有元素的标识符 如下所示 form book 1 2 3 我想要的是用其他值替换该标识符中的第二个数字 我将函数 match 与以下正则表达式一起使用 var regexp d d d 但它返回我包含的数组 1 2 3 2 因此 当我尝试
  • 淡出和循环一组 div 的最佳方式

    假设我有以下 div div class a You are funny div div class b You are smart div div class c You are cool div 最好的展示方式是什么div a持续 5
  • 当用户单击链接时,如何记录 MixPanel 事件?

    当用户单击某种类型的链接时 我试图在 MixPanel 中记录一个事件 我正在使用 JQuery 不引人注意地完成此操作 据我所知 我需要添加一个回调函数 以便在记录事件后将用户带到 URL 这是我正在使用的代码 不幸的是
  • JavaScript 代码在不使用 ActiveX 的情况下截取网站屏幕截图

    我有一个用户与之交互的 JavaScript 应用程序 我需要保存当前界面的外观 裁剪出我需要的部分 或者通过指定div只拍摄我需要的部分 然后发送回服务器 显然任何外部服务都无法做到这一点 我需要一个 JavaScript 或Flash
  • 如果数字小于 10,则显示前导零 [重复]

    这个问题在这里已经有答案了 可能的重复 JavaScript 相当于 printf string format https stackoverflow com questions 610406 javascript equivalent t
  • JavaScript onresize 事件多次触发

    我在尝试仅在触发 onresize 事件时运行一次函数时遇到一些麻烦 我已经看过这个问题DOM onresize 事件 https stackoverflow com questions 1500312 javascript onresiz
  • KeyboardAvoidingView - 隐藏键盘时重置高度

    我正在使用 React NativeKeyboardAvoidingView设置我的高度View当显示键盘时 但是当我关闭应用程序中的键盘时 视图的高度不会变回原来的值
  • 单击列表时使用 bootstrap Dropdown 防止下拉菜单消失

    我正在使用使用引导下拉菜单 http twitter github com bootstrap javascript html dropdowns生成下拉菜单 我想防止点击菜单时菜单消失 我已经实现了以下代码 但它不起作用 知道如何修复它吗

随机推荐

  • 合并两个相同类型的案例类,除了某些字段

    如果您有这样的案例类 case class Foo x String y String z String 你有两个实例 例如 Foo x1 y1 z1 Foo x2 y2 z2 是否可以将实例 1 合并到实例 2 中 除了字段 z 之外 结
  • 在 Android 中使用 cURL

    我想在我的 android 应用程序中以本机代码使用 cURL 库 使用最新的 NDK r5b 经过在线研究后 似乎在 android 中使用 cURL 的唯一方法是构建包含curl 的整个 android 源代码树 并且以某种方式生成 c
  • iDevice for Dummies:一台设备可以分配多个配置(个人/企业)吗? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 是否可以为一个 iDevice 分配多个规定 老实说
  • 触发器从另一个表更新总和 MySQL

    我有一个数据库 用于跟踪我所在联赛的统计数据和平均值 我有一个结果表和一个排名表 我将结果中的 分数 添加到排名中的总体 分数 中 我目前有一个查询 它成功地将结果中的分数添加到积分表中 但是 当我添加新结果时 排名不会更新 这是我的查询
  • C / C++ / C#:如何执行“mount -a”

    问题 在 C C C 中 我需要 C 但 C 和 C 也可以 如何在 Linux 上执行 mount a 我的意思是 以编程方式 without开始一个像这样的过程 system mount a Edit 注意 a 我的问题实际上不是关于如
  • Express.JS:将 cookie 附加到静态提供的内容

    我使用 Express JS 来提供静态内容 express use express static When index html服务完成后 我想在响应旁边发送一个 cookie 指示用户是否已登录 通常应该使用res cookie 但我不
  • 如何将厨师食谱中的一种资源的价值传递到另一种资源?

    我正在尝试更改一个资源中的属性 并希望在另一资源中使用更新后的值 但更新后的值未反映在另一资源中 请帮我 Code node oracle asm disks each key do disk Chef Log info I am in c
  • 如何从命令行将参数传递给 Makefile?

    如何从命令行将参数传递给 Makefile 我明白我能做到 make action VAR value value with Makefile VAR default action echo VAR 我如何获得以下行为 make actio
  • 带 SVG 终端的 Gnuplot 4.7 超链接和超文本

    我正在 Gnuplot 4 7 中使用 SVG 终端 并尝试在浏览器上同时使用超文本和超链接 分别通过鼠标悬停和鼠标单击绘制的数据点来激活 鼠标悬停的工作原理要感谢 stackoverflow 对我上一个问题的帮助 我的数据输入文件如下所示
  • JComponent 和 ComponentUI 委托之间的绑定事件

    我已经开始尝试创建普通的 MVC Swing 组件 我对M和C没有任何问题 但是V向我抛出了一个我通常无法解决的问题 问题是 Controller 是组件的主类 例如 MyComponent 并且它扩展了 JComponent View 是
  • 使用Nutch爬取指定URL列表

    我有一百万个 URL 列表需要获取 我使用这个列表作为坚果种子并使用基本的crawl命令 Nutch 去取它们 但是 我发现 Nutch 会自动获取不在列表中的 URL 我确实将爬网参数设置为 深度1 topN 1000000 但它不起作用
  • 创建 Java 程序来搜索文件中的特定单词

    我刚刚学习该语言 想知道更有经验的 Java 程序员在以下情况下会做什么 我想创建一个java程序 它将搜索指定文件中特定单词的所有实例 你会如何处理这个问题 Java API 是否附带一个提供文件扫描功能的类 或者我是否必须编写自己的类来
  • 注册以支持 iOS 应用程序的图像文件

    您好 我想注册以支持我的应用程序中的图像文件 因此 当用户点击 iPhone 照片应用程序中的操作按钮时 我的应用程序图标将显示在 打开方式 菜单中 我的 info plist 中有以下内容
  • 在 LINQ 中选择计数

    我有一个包含列的 SQL Server 表ResolvedDate and ResolvedBy 现在我想选择这两列并计算它们的结果 我想我会这样实现 dataContext Activities Where a gt a IsResolv
  • 比较 Haskell 与 C# 的类型系统,寻找类似物

    我对 Haskell 编程还很陌生 我正在尝试处理它的类 数据 实例和新类型 这是我的理解 data NewData Constr1 Int Int Constr2 String Float 与 Java 或 C 大致相同 class Ne
  • AngularJS 与 MVC 6

    这是一MVC 6 WebApi应用 我正在尝试在后端使用 WebApi 在前端使用 AngularJS 我有两个静态文件 index html 和 login html 最终将会有更多的静态文件 我的 Angular 应用程序包含在inde
  • Quickfix 无法读取重复组

    我在 Windows 中使用 Quickfix 和 python 绑定 我过去曾能够提出市场数据请求 我最近更换了不同的 API 提供商 Cunningham 又名 CTS 并且遇到了很多问题 然而 至少其中之一似乎是 Quickfix 内
  • 在 APL 中创建单位矩阵最惯用的方法

    根据罗塞塔代码 在 APL 中有两种创建单位矩阵的惯用方法 1 ID 2 ID 1 0 2 如何运作 为什么这比 1 更好 后者使用 APL 中惯用的方法外积 1 0创建一个向量 其中包含1其次是 零 所以 这个向量的长度是 1 涵盖 by
  • 如何克隆微软图表控件?

    克隆 Microsoft Chart Control 对象的推荐方法是什么 因为是第三方库 所以无法使用解决方案这里提到因为我无法将对象标记为可序列化 最好 我不想引入任何第三方控件来克隆图表 除非如果没有第三方控件绝对不可能这样做 您不需
  • 将 Fetch API 与 Promise.all 一起使用

    我的目标是从两个 URL 获取数据 并仅在两个 URL 均成功返回时才执行操作 另一方面 如果其中任何一个失败 我想返回错误 我已经尝试了我的代码并设法获得了预期的效果 我的问题是 是否有更有效 更简洁的方法来实现相同的功能 辅助函数 le