博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Promise.all的使用
阅读量:5154 次
发布时间:2019-06-13

本文共 1597 字,大约阅读时间需要 5 分钟。

我有一个需求如下:

有一个学生号的数组,根据这个数组,取出相关学生的所有信息。获取学生信息的接口用setTime模拟,假设每次请求需要耗时2s,代码如下

// 获取学生信息接口function getSudent(sid) {    return new Promise((resolve, reject) => {        setTimeout(() => {            const dataBase = {                '20190101': {sid:20190101,name:'小明', age:20},                '20190102': {sid:20190102,name:'小红', age:18},                '20190103': {sid:20190102,name:'小青', age:17}            }            resolve(dataBase[sid])        }, 2000);    })}

已知要得到信息的学生的数组如下:

const params = ['20190101', '20190102', '20190103']

触发动作为页面上的一个按钮,点击开始执行

    
Document

使用传统回调(需要2s,所有请求完成)

let i = 0;async function getStart(){    let mytimer = setInterval(() => {        i++        console.log(`等待了${i}秒`)    },1000)        let result = []    for(let i=0; i
{ result.push(res); if(i === params.length-1){ console.log(result); //2s clearTimeout(mytimer); } }) }}let btn = document.querySelector('button');btn.onclick = getStart;

使用await(需要6s,所有请求完成)

let i = 0;async function getStart(){    let mytimer = setInterval(() => {        i++        console.log(`等待了${i}秒`)    },1000);        let result = [];    for(let i=0; i

优化await(需要2s,所有请求完成)

let i = 0;async function getStart(){    let mytimer = setInterval(() => {        i++        console.log(`等待了${i}秒`)    },1000);    let result = []    for(let i=0; i

不过针对第一种并行回调确实没什么优化,因为那个本来就是并行,Promise.all仅是把串行请求优化为并行。

还有就是如果后一个接口依赖前一个接口返回值的话,只能是串行
综上,其实Promise.all用武之地并不多

转载于:https://www.cnblogs.com/dshvv/p/11152431.html

你可能感兴趣的文章
植物大战僵尸中文年度版
查看>>
26、linux 几个C函数,nanosleep,lstat,unlink
查看>>
投标项目的脚本练习2
查看>>
201521123107 《Java程序设计》第9周学习总结
查看>>
Caroline--chochukmo
查看>>
iOS之文本属性Attributes的使用
查看>>
从.Net版本演变看String和StringBuilder性能之争
查看>>
Excel操作 Microsoft.Office.Interop.Excel.dll的使用
查看>>
解决Ubuntu下博通网卡驱动问题
查看>>
【bzoj2788】Festival
查看>>
执行gem install dryrun错误
查看>>
Java SE之正则表达式一:概述
查看>>
HTML5简单入门系列(四)
查看>>
实现字符串反转
查看>>
转载:《TypeScript 中文入门教程》 5、命名空间和模块
查看>>
苹果开发中常用英语单词
查看>>
[USACO 1.4.3]等差数列
查看>>
Shader Overview
查看>>
Reveal 配置与使用
查看>>
Java中反射的学习与理解(一)
查看>>