之前项目中遇到过这样的需求,前端一个页面有很多数据需要向后端请求,当所有请求都返回时才会继续下面的动作,我看其它人是用请求嵌套写法去搞的,但是这些请求之间并没有依赖关系,这样会导致浪费效率,今天学了一招,可以用Promise.all去返回一个新的promise,上代码
<script>
function timer(timeout,name)
{
// 这里用定时器模拟,可以换为ajax请求
return new Promise(resolve => {
setTimeout(()=>{
console.log(name)
},timeout);
})
}
async function allP()
{
let p1 = timer(1000,'请求1');
let p2 = timer(1000,'请求2');
let p3 = timer(1000,'请求3');
await Promise.all([p1,p2,p3]);
}
allP();
</script>
如果是同步方式做需要3秒,而这么做1秒就返回了