首页 >> 大全

vue实现循环发起多个异步请求——Promise.all()与Promise

2023-09-11 大全 29 作者:考证青年

直接先上个例子

<template><div><h1>page1h1><p>{{ msg }}p><el-button type="primary" plain @click="downloadList()">主要按钮el-button>div>
template>
<script>
export default {data() {return {msg: "我是page1组件",pagnation:{total:1000,}}},methods: {downloadList(num) {let array = []// 计算可以循环多少次let n = 1if (this.pagnation.total < 100) {n = 1} else {n = Math.ceil(this.pagnation.total / 100)}for (let i = 0; i < n; i++) {array = array.concat(this.ForPromise(i))}Promise.all(array).then((res) => {console.log(res) // [ 0, 1, 2 ]})},ForPromise(num) {return new Promise((resolve, reject) => {resolve('成功了'+num);//请求操作// this.axios.get('http://test.fastadmin.cn/index.php/api/index/test',{}).then(res => {}).catch(err => {});})},sleep(ms) { //sleep延迟方法2var unixtime_ms = new Date().getTime();while (new Date().getTime() < unixtime_ms + ms) { }},}
}
script>

结果

说明

.all 在任意一个传入失败时返回失败。例如,如果你传入的 中,有四个

在一定的时间之后调用成功函数,有一个立即调用失败函数,那么 .all 将立即变为失败。

.race()的使用

_循环请求接口_循环发送请求

var p1 = new Promise(function(resolve, reject) {setTimeout(resolve, 500, "one");
});
var p2 = new Promise(function(resolve, reject) {setTimeout(resolve, 100, "two");
});Promise.race([p1, p2]).then(function(value) {console.log(value); // "two"// 两个都完成,但 p2 更快
});

3..all()与.race()请求时的区别

.all() 适合于后面的异步请求接口依赖前面的接口请求的数据时使用。

.race()没有先后顺序,那个先请求回来那个先显示

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了