当前位置: 首页 > news >正文

详细分析Js中的Promise.all基本知识(附Demo)

目录

  • 1. 基本知识
  • 2. Demo
  • 3. 实战

1. 基本知识

Promise.all 是 JavaScript 中的一个方法,它接受一个由 Promise 对象组成的数组作为参数,并在所有 Promise 对象都变为 resolved(已完成)状态时才返回一个新的 Promise 对象,这个新的 Promise 对象的状态也变为 resolved,其值是一个包含了所有 Promise 对象结果的数组

如果其中任何一个 Promise 对象被 rejected(已拒绝),那么 Promise.all 返回的 Promise 对象的状态就会变为 rejected,第一个被拒绝的 Promise 对象的值会作为这个 Promise 对象的值

主要的作用如下:

  1. 并行执行多个异步操作,并在它们全部完成后执行相应的操作
  2. 可用于等待多个异步任务全部完成后进行后续处理,比如在页面加载时同时加载多个资源

基本的语法如下:Promise.all(iterable);

iterable: 一个可迭代对象,通常是一个包含多个 Promise 对象的数组

2. Demo

一、等待多个异步请求完成后进行处理

const promise1 = new Promise((resolve, reject) => {setTimeout(() => resolve('Promise 1 finished'), 1000);
});const promise2 = new Promise((resolve, reject) => {setTimeout(() => resolve('Promise 2 finished'), 2000);
});Promise.all([promise1, promise2]).then(results => {console.log(results); // 输出: ["Promise 1 finished", "Promise 2 finished"]// 所有异步请求都已完成,可以进行后续操作}).catch(error => {console.error(error);// 如果有任何一个 Promise 被 rejected,则会在这里捕获到错误});

截图如下:

在这里插入图片描述

二、处理多个异步操作的结果

function fetchUserData() {return new Promise((resolve, reject) => {setTimeout(() => resolve('User data fetched'), 1500);});
}function fetchPosts() {return new Promise((resolve, reject) => {setTimeout(() => resolve('Posts fetched'), 2000);});
}Promise.all([fetchUserData(), fetchPosts()]).then(results => {const [userData, posts] = results;console.log(userData); // 输出: "User data fetched"console.log(posts); // 输出: "Posts fetched"// 所有异步请求都已完成,可以进行后续操作}).catch(error => {console.error(error);// 如果有任何一个 Promise 被 rejected,则会在这里捕获到错误});

三、处理其中一个 Promise 被拒绝的情况

const promise1 = new Promise((resolve, reject) => {setTimeout(() => resolve('Promise 1 finished'), 1000);
});const promise2 = new Promise((resolve, reject) => {setTimeout(() => reject('Promise 2 failed'), 1500);
});Promise.all([promise1, promise2]).then(results => {console.log(results); // 不会执行,因为有一个 Promise 被拒绝}).catch(error => {console.error(error); // 输出: "Promise 2 failed"// 只要有一个 Promise 被拒绝,就会在这里捕获到错误});

3. 实战

此处实战不可完整执行,只是方便理解

迭代计算多个数值,最后在展示页面显示到折线图中:

在这里插入图片描述

或者时显示在图表中:

在这里插入图片描述

相关文章:

详细分析Js中的Promise.all基本知识(附Demo)

目录 1. 基本知识2. Demo3. 实战 1. 基本知识 Promise.all 是 JavaScript 中的一个方法,它接受一个由 Promise 对象组成的数组作为参数,并在所有 Promise 对象都变为 resolved(已完成)状态时才返回一个新的 Promise 对象&#xf…...

const,static深度总结——c++穿透式分析

前言;c类和对象的知识点中除了几种默认函数, 比较重要的还有使用const和static修饰成员相关知识点。const在c中特性很简单。 但是在使用中, 比较容易疏忽大意出现问题。 static特性也很简单, 但是比起const来要直接的多。 在使用中…...

快速搭建一个一元二次方程flask应用

新建flask_service目录、templates子目录 flask_service —— app.py —— templates —— —— index.html app.py from flask import Flask, request, jsonify, render_template import random import matplotlib.pyplot as plt from io import BytesIO import base64app F…...

O2OA红头文件流转与O2OA版式公文编辑器基本使用

O2OA开发平台在流程管理中,提供了符合国家党政机关公文格式标准(GB/T 9704—2012)的公文编辑组件,可以让用户在包含公文管理的项目实施过程中,轻松地实现标准化公文格式的在线编辑、痕迹保留、手写签批等功能。并且可以…...

软件测试:C++ Google Test单元测试框架GTest

目录 编译和安装框架使用AssertionsGoogle TestingGoogle MockingMatchersActions 运行结果 最近在写项目的时候,学到了许多关于软件测试的知识,也不断的使用新的测试框架和测试工具,每次总是机械式的拼接其他人的代码,代码发生错…...

大数据面试题 —— HBase

目录 什么是HBase简述HBase 的数据模型HBase 的读写流程HBase 在写的过程中的region的split的时机HBase 和 HDFS 各自的使用场景HBase 的存储结构HBase 中的热现象(数据倾斜)是怎么产生的,以及解决办法有哪些HBase rowkey的设计原则HBase 的列…...

SCI一区 | Matlab实现GWO-TCN-BiGRU-Attention灰狼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测

SCI一区 | Matlab实现GWO-TCN-BiGRU-Attention灰狼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现GWO-TCN-BiGRU-Attention灰狼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测预测效果基本介绍模型描述程序…...

SpringMVC的执行原理

SpringMVC的执行原理可以简单地概括为以下几个步骤: 客户端发送请求:客户端(一般是浏览器)发送HTTP请求到服务器,请求特定的URL资源。 前端控制器(DispatcherServlet)接收请求:在Sp…...

Qt + HTTP 线程交互类封装

介绍 QT的HTTP模块封装的交互类&#xff0c;线程运行。使用时添加自己的业务逻辑即可 代码 头文件 /*** file httpcontroller.h* brief 云台相机的协议交互类* author xintong-zhou* date 2024-03-13*/#ifndef HTTPCONTROLLER_H #define HTTPCONTROLLER_H#include <QNet…...

GitHub Copilot+ESP开发实战-串口

上篇文章讲了GitHub Copilot在应用中可能遇到的问题&#xff0c;接下来小启就简单介绍下GitHub Copilot在ESP32开发中C语言实现串口功能&#xff0c;感兴趣的可以看看。 一、向Copilot提问&#xff1a; 1. ESP32用C语言实现串口初始化&#xff1b; 2.配置uart为1&#xff0c…...

C# 使用ffmpeg将图片保存为mp4视频

使用 FFmpeg 这个强大的多媒体处理工具&#xff0c;可以轻松地将一系列图片转换为一个 MP4 视频文件。以下是一个基本的命令行示例来完成这个任务&#xff1a; ffmpeg -framerate 25 -i image-%03d.jpg -c:v libx264 -r 30 -pix_fmt yuv420p output.mp4 命令参数说明&#xf…...

Java安全技术及代码审计技巧

概述 Java安全编码和代码审计是确保Java应用程序安全性的重要环节。本文旨在介绍Java中常见的Web漏洞、安全编码示例以及一些常见漏洞函数&#xff0c;并提供一个自动化查找危险函数的Python脚本。 1. XML外部实体 (XXE) 漏洞 介绍 XML文档结构包括XML声明、DTD文档类型定义&…...

C# 使用OpenCvSharp4将Bitmap合成为MP4视频的环境

环境安装步骤&#xff1a; 在VS中选中项目或者解决方案&#xff0c;鼠标右键&#xff0c;选择“管理Nuget包”&#xff0c;在浏览窗口中搜索OpenCVSharp4 1.搜索OpenCvSharp4,选择4.8.0版本&#xff0c;点击安装 2.搜索OpenCvSharp4.runtime.win,选择4.8.0版本&#xff0c;点…...

[游戏开发][Unity] 导出Xcode工程,完成调试与发布

Unity导出Xcode工程(模拟器版本与真机调试) [游戏开发][Unity] 打包Xcode工程模拟器真机调试_unity5 打包xcod-CSDN博客 Unity导出发布版本Xcode工程&#xff0c;上传app到官网&#xff0c;正式发布或创建TestFlight Xcode发布AppStore与TestFlight全流程_xcode 上传到testfit-…...

JSONP 实现跨域请求案例

后端使用 express 搭建&#xff0c;案例代码如下&#xff1a; const express require(express)const app express() const PORT 3000app.get(/data, (req, res) > {const jsonData {name: Alan,age: 666,city: GD}const callback req.query.callback // 获取前端中的回…...

2024年智慧城市、人文发展与区域经济国际会议(ICSCCDRE 2024)

2024年智慧城市、人文发展与区域经济国际会议&#xff08;ICSCCDRE 2024&#xff09; 2024 International Conference on Smart Cities, Cultural Development and Regional Economy 会议简介&#xff1a; 城市经济人文发展是一个综合性的过程&#xff0c;它关注城市在经济、…...

目标检测——PP-YOLO算法解读

PP-YOLO系列&#xff0c;均是基于百度自研PaddlePaddle深度学习框架发布的算法&#xff0c;2020年基于YOLOv3改进发布PP-YOLO&#xff0c;2021年发布PP-YOLOv2和移动端检测算法PP-PicoDet&#xff0c;2022年发布PP-YOLOE和PP-YOLOE-R。由于均是一个系列&#xff0c;所以放一起解…...

多特征变量序列预测(11) 基于Pytorch的TCN-GRU预测模型

往期精彩内容&#xff1a; 时序预测&#xff1a;LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较-CSDN博客 风速预测&#xff08;一&#xff09;数据集介绍和预处理-CSDN博客 风速预测&#xff08;二&#xff09;基于Pytorch的EMD-LSTM模型-CSDN博客 风速预测&#xff…...

Lvs+keepalived+nginx搭建高可用负载均衡集群

环境配置 master主机192.168.199.149&#xff0c;虚拟IP192.168.199.148 back备机192.168.199.150 真实服务器1 192.168.199.155 真实服务器2 192.168.199.156 关闭防火墙和selinux master配置&#xff08;149&#xff09; 添加虚拟IP ip addr add 192.168.199.148/24 …...

WPF —— 控件模版和数据模版

1:控件模版简介: 自定义控件模版&#xff1a;自己添加的样式、标签&#xff0c;控件模版也是属于资源的一种&#xff0c; 每一个控件模版都有一唯一的 key&#xff0c;在控件上通过template属性进行绑定 什么场景下使用自定义控件模版&#xff0c;当项目里面多个地方…...

别再为Linux乱码发愁了!手把手教你从Windows‘偷’字体(附CentOS/Ubuntu双系统命令)

从Windows到Linux的字体迁移实战&#xff1a;彻底解决中文显示问题 每次打开Linux终端或图形界面&#xff0c;看到那些破碎的方块字符&#xff0c;是不是有种想砸键盘的冲动&#xff1f;别急&#xff0c;你电脑里其实藏着一套完美的解决方案——Windows系统自带的高质量中文字体…...

当AI开始“制造“:智能工厂是提升效率还是取代工人?

写在前面&#xff1a;走进现在的工厂&#xff0c;你会发现一个惊人的变化&#xff1a;流水线上站着的不是工人&#xff0c;而是机械臂&#xff1b;质检员不再是肉眼观察&#xff0c;而是AI摄像头&#xff1b;仓库里搬运货物的&#xff0c;是自动驾驶的AGV小车。制造业正在经历一…...

别再用Sigmoid了!聊聊ReLU和LeakyReLU如何拯救你的深度网络训练

别再用Sigmoid了&#xff01;聊聊ReLU和LeakyReLU如何拯救你的深度网络训练 深夜调试模型时&#xff0c;你是否遇到过这样的场景&#xff1a;损失函数曲线像被冻住一样纹丝不动&#xff0c;反向传播的梯度在深层网络中逐渐"消失"&#xff1f;这很可能是因为你还在使用…...

技术书籍解毒指南:90分钟吸收法

在软件测试领域&#xff0c;技术迭代的速度常令从业者感到焦虑。从传统的手工测试到自动化测试&#xff0c;再到如今与DevOps、云原生、AI结合的智能测试&#xff0c;知识体系不断膨胀。《持续交付》《Google软件测试之道》《软件测试的艺术》等经典著作虽被奉为圭臬&#xff0…...

【会议征稿通知 | 衢州学院主办 | IET出版 | EI 、Scopus稳定检索】第三届人工智能与电力系统国际学术会议(AIPS 2026)

第三届人工智能与电力系统国际学术会议&#xff08;AIPS 2026) 2026 3rd International Conference on Artificial Intelligence and Power System 2026年5月22-24日 | 中国-浙江-衢州 大会官网&#xff1a;www.icaips.org 截稿时间&#xff1a;见官网&#xff08;早投稿&am…...

别再折腾了!保姆级教程:用Unity Hub + VS2022搞定Unity开发环境(附安卓模块选择建议)

Unity开发环境配置终极指南&#xff1a;从避坑到高效搭建 刚接触Unity开发的新手往往会在环境配置阶段遭遇各种"坑"——编辑器版本选择困难、Visual Studio组件勾选错误、安卓模块配置不当等问题层出不穷。我曾见过不少热情满满的初学者在这个阶段耗费数天时间反复重…...

GDB调试完别急着关!聊聊quit、exit、detach和日志保存的正确退出姿势

GDB调试完别急着关&#xff01;聊聊quit、exit、detach和日志保存的正确退出姿势 调试代码就像拆解一枚精密钟表&#xff0c;而优雅退出调试会话则是最后一步——把零件装回去的精细操作。许多开发者习惯性按下Ctrl-D或输入quit就走人&#xff0c;殊不知这可能让线上服务突然崩…...

lite-avatar形象库效果惊艳:客服形象在复杂噪声环境下仍保持唇动-语音强同步

lite-avatar形象库效果惊艳&#xff1a;客服形象在复杂噪声环境下仍保持唇动-语音强同步 1. 引言&#xff1a;数字人客服的新突破 在数字人技术快速发展的今天&#xff0c;我们经常遇到一个令人头疼的问题&#xff1a;在嘈杂的环境中&#xff0c;数字人形象的口型和语音总是对…...

2026年,华为、阿里、腾讯云谁能在Token驱动的AI新世界掌控“收税权”?

华为、阿里、腾讯云各施策略&#xff0c;2026年谁能在Token驱动的AI新世界掌控“收税权”&#xff1f;Token作为当下的“硬通货”&#xff0c;正在重新定义中国AI产业规则&#xff0c;也彻底“搅乱”了云计算市场。3月31日&#xff0c;华为发布2025年年报&#xff0c;云计算业务…...

uni-app怎么获取WiFi列表 uni-app手机连接WiFi信息查询【教程】

getWifiList返回空因未走完完整流程&#xff1a;需先startWifi初始化&#xff0c;再注册onGetWifiList监听回调&#xff0c;且真机必须开启定位权限并配置requiredPrivateInfos白名单。uni-app里getWifiList为什么总返回空&#xff1f;因为没走完完整流程&#xff1a;微信小程序…...