• 使用Promise异步并发请求,使用Promise并发的场景是什么


    Promise是异步编程的一种解决方案,在ES6中Promise被列为了正式规范,统一了用法,原生提供了Promise对象,可以通过new 一个promise来使用它。  

    就我而言,使用并发请求的场景还是不会很少的,Promise简直太完美,太好用。

    1、使用Promise并发的方法:

    注:all会等两个成功才表示请求成功(如果其中一个接口被跨域或者网络中断了,那么这整个promise.all就会失败),如果一个接口处于pending状态,那么resultData这个值会一直处于等待状态。

    使用all方法

    //请求1
    fetch1 = () => {
    return http.post(`/aa/1`).then(res => { //return整个promis结果,返回给resultData,resultData通过.then接收
    if (res.code === 0) {
    return res.data;
    }
    });
    };
    //请求2
    fetch2 = () => {
    return http.post(`/aa/2`).then(res => { //return整个promis结果,返回给resultData,resultData通过.then接收
        if (res.code === 0) {
    return res.data;
    }
    });
    };

    const   resultData =   Promise.all([fetch1,fetch2])    //异步并发,里面有几个就写几个
    
    resultData.then(res=>console.log(res))                 //通过.then获取的都异步请求结果,是一个数组,长度与上面并发里面数组的长度一样,就是每个接口相对应的结果


    2、Promise并发使用的场景:

      1、之前我有个用户列表有重置按钮和编辑的功能,这两个都是不同接口。

     2、现在需求变更了,需要将重置密码改到编辑弹窗里面,给用户输入密码。点击确定时候需要去同时做到两个接口处理完毕loading后才关闭弹窗的效果

     这时候就需要并发异步请求去请求接口了。(题外话:做法可以通过后端直接修改接口去完成,前端也不用并发,但是前端处理并不难。)

    事实上这种场景还是有很多的,如:需要通过获取两个接口的值,然后再去等这两个接口请求的值,作为参数去请求另一个接口的情况也有过。我就不一一例举了。

    末尾贴以下promis基本用法链接:这个人写的很清楚了,我只是贴出实际应用场景来结合用法。

    https://www.jianshu.com/p/3023a9372e5f

  • 相关阅读:
    Oracle中修改表名遇到“ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效”
    zabbix监控华为服务器硬件状态
    基于LLDP和OpenFlow的网络拓扑检测
    应用nslookup命令查看A记录、MX记录、CNAME记录和NS记录
    Dockerfile
    Get Docker CE for CentOS
    前端构建工具gulpjs的使用介绍及技巧
    Error: Cannot find module 'gulp-clone'问题的解决
    oracle 12C wmsys.wm_concat()函数
    Windows实现内网IPMI端口转发
  • 原文地址:https://www.cnblogs.com/seemoon/p/13680452.html
Copyright © 2020-2023  润新知