使用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

 

posted @ 2020-09-17 14:44  月亮出来了  阅读(1318)  评论(0编辑  收藏  举报