异步并发与继发

  1. 通过for... of...实现异步继发请求:
    for... of...zhi只有等上一个异步请求完成之后才能开启下一个异步请求
  2. 通过map实现异步并发请求:
    同时开启多个异步请求,将Promise保存在一个数组中,通过for of 配合await实现继发读取。
    应用:对于存在依赖关系的url内容请求等场景,可以使用该方式,并发请求多个url,节省了请求时间。
var promise = function(count)  {
        var tempPromise = new Promise((resolve, reject) => {
            console.log(count);
            setTimeout(() => resolve(`${count} : ${new Date().getSeconds()}`), 2000)
        })

        return tempPromise;
    }

    var arr = [1,2,3,4,5]

    async function logOut() {
        for (var i of arr) {
            const response = await promise(i);
            response.then()
        }
    }

    async function logOut2() {
        const textArr = arr.map(async i => {
            const response = await promise(i);
            // console.log(response)
            return response
        })

        for (var i in textArr) {
            console.log(await textArr[i])
        }
    }

logOut()的输出如下所示:


异步并发与继发_第1张图片
image.png

logOut2()的输入如下所示


异步并发与继发_第2张图片
image.png

你可能感兴趣的:(异步并发与继发)