async,await模拟所有请求返回后执行某个操作

之前项目中遇到过这样的需求,前端一个页面有很多数据需要向后端请求,当所有请求都返回时才会继续下面的动作,我看其它人是用请求嵌套写法去搞的,但是这些请求之间并没有依赖关系,这样会导致浪费效率,今天学了一招,可以用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秒就返回了

发布了236 篇原创文章 · 获赞 10 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/gunsmoke/article/details/104583112