Promise.all()和Promise.race()

news/2024/10/17 7:13:44/
  • Promise.all接收的是数组,得到的结果也是数组,并且一一对应,也可以理解为Promise.all照顾跑的最慢的,最慢的跑完才结束。
  • Promise.race接收的也是数组,不过,得到的却是数组中跑的最快的那个,当最快的一跑完就立马结束。

Promise.all( ).then( )适用于处理多个异步任务,且所有的异步任务都得到结果时的情况。

比如:用户点击按钮,打开对话框,对话框中有两部分数据,分别从两个接口返回,当对话框初始化是显示'数据加载中'的状态,当两个接口数据全部成功返回时,'数据加载中'状态消失

此时就可以用Promise.all()来处理

<template><div><el-button @click="handleClick"> Promise.all </el-button></div>
</template><script>
export default {name: 'promiseAll',methods: {handleClick() {this.isShowDialog = true //打卡dialogthis.loading = true // 开启loading数据加载中function asyncFn1() {return new Promise(resolve => {setTimeout(() => {let data1 = '第一个接口返回数据啦'resolve(data1)}, 800)})}function asyncFn2() {return new Promise(resolve => {setTimeout(() => {let data2 = '第二个接口返回数据啦'resolve(data2)}, 500)})}Promise.all([asyncFn1(), asyncFn2()]).then(res => {//res就是两个接口返回的数据console.log(res)//['第一个接口返回数据啦', '第二个接口返回数据啦']this.loading = false //关闭loading数据加载中})}}
}
</script>

Promise.race()赛跑机制,只认第一名。

 比如:点击按钮发送请求,当后端的接口超过一段时间,假设超过3秒,没有返回结果,提示超时

 

<template><div><el-button @click="handleClick">Promise.race</el-button></div>
</template><script>
export default {name: 'promiseRace',methods: {handleClick() {function asyncFn1() {return new Promise(resolve => {setTimeout(() => {let data1 = '某个请求'resolve(data1)}, 4000)})}function asyncFn2() {return new Promise(resolve => {setTimeout(() => {let data2 = '超时提醒'resolve(data2)}, 3000)})}Promise.race([asyncFn1(), asyncFn2()]).then(res => {console.log(res) //拿到的是最快的一个if (res === '超时提醒') {this.$message.warning('接口请求超时了')} else {console.log('正常操作后续')}})}}
}
</script>


http://www.ppmy.cn/news/107313.html

相关文章

【Linux】iptables 防火墙(SNAT/DNAT)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、SNAT 原理与应用二、SNAT转换三、DNAT的介绍1.DNAT概述2.DNAT转换前提条件 四、DNAT转换五、防火墙规则的备份和还原六、tcpdump抓包工具的运用 一、SNAT 原理与…

Form Generator扩展 el-select 数据字典

一、form-generator是什么?✨ ⭐️ 🌟 form-generator的作者是这样介绍的:Element UI表单设计及代码生成器,可将生成的代码直接运行在基于Element的vue项目中;也可导出JSON表单,使用配套的解析器将JSON解析成真实的表单。 但目前它提供的组件并不能满足我们在项目中的…

K8S的服务质量QoS —— 筑梦之路

K8S中的应用服务质量&#xff08;QoS&#xff09;介绍 服务质量&#xff08;QoS&#xff09;类是Kubernetes的概念&#xff0c;它确定Pod的调度和驱逐优先级 Kubelet使用它来管理驱逐pod的顺序&#xff0c;以及使用高级CPU管理策略允许更复杂的pod调度决策。 QoS由Kubernetes本…

国产替代10BASE-T ST7010QNL 应用局域网的以太网变压器/扼流器

Hqst华强盛导读&#xff1a; 华强盛是电子产品国产替代大军中的一员&#xff0c;随着中国电子产业的快速发展&#xff0c;越来越多的电子产品开始出现了国产替代品。这些国产替代品在性能、品质和价格等方面都有了显著的提升&#xff0c;成为了工厂用户的首选。 国产替代10BAS…

JAVA BigDecimal 比较大小 、计算

1&#xff1a;比较大小 注意&#xff1a;使用compareTo&#xff08;&#xff09;方法比较大小时 参与比较的两个值 必须有值 不能为空 BigDecimal a new BigDecimal("3"); BigDecimal b new BigDecimal("4"); if (a.compareTo(b) < 0) { System.…

干货分享:小红书商业化+微信社区运营,引流自动裂变拓客方案

干货分享&#xff1a;小红书商业化微信社区运营&#xff0c;引流自动裂变拓客方案 背景&#xff1a;2023为止小红书基本已是当代年轻人都会下载和使用的软件了&#xff0c;小红书是生活方式平台和消费决策入口&#xff0c;通过智能机器人学习和对用户的精准智能匹配走红&#x…

mysql8+忘记密码的详细解决方法

mysql8忘记密码的详细解决方法 不同的版本&#xff0c;可能处理的方式不一样&#xff0c;这里说一下8以上的版本处理密码忘记的问题&#xff0c;windows系统。 一.问题&#xff1a; 太久没用mysql &#xff0c;忘记了原先的root密码 二&#xff1a;解决 1.关闭mysql服务,我的…

压力山大?搭建JMeter分布式压测环境轻松应对!

目录 引言 windows环境部署 1.安装环境变量 2.配置环境变量 3.修改Jmeter配置文件 4.启动jmeter 5.启动分布式服务 Linux环境部署 1.安装JDKJmeter 2.环境优化 4.编写Jmeter脚本 5.启动Jmeter 6.停止Jmeter 7.打包查看测试报告 引言 您想要提高您的应用程序的性…