码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • vue实现循环发起多个异步请求——Promise.all()与Promise.race()


    直接先上个例子

    <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 = 1
                if (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延迟方法2
                var unixtime_ms = new Date().getTime();
                while (new Date().getTime() < unixtime_ms + ms) { }
            },
    
        }
    }
    script>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50

    结果

    在这里插入图片描述

    说明

    Promise.all 在任意一个传入的 promise 失败时返回失败。例如,如果你传入的 promise中,有四个 promise
    在一定的时间之后调用成功函数,有一个立即调用失败函数,那么 Promise.all 将立即变为失败。

    Promise.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 更快
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

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

    Promise.all() 适合于后面的异步请求接口依赖前面的接口请求的数据时使用。
    Promise.race()没有先后顺序,那个先请求回来那个先显示

  • 相关阅读:
    c#面试编程题
    创建一个中国人的类
    _linux 进程间通信(管道)
    一文看懂推荐系统:Gate网络2:百度GemNN(Gating-Enhanced Multi-Task Neural Networks)
    十分钟教你在 k8s 中部署一个前后端应用
    C //例6.8 输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。
    数据结构之——OJ题环形队列实现详解
    算法系列--递归
    分布式计算框架——MapReduce
    未来3-5年,前端低代码化,具体往哪个方向发展更好就业?
  • 原文地址:https://blog.csdn.net/qq_36303853/article/details/125886662
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号