async await如何实现并发

还记得去年实习参加秋招,二面面试官龙哥(现在的组长)问了一个面试题,async await如何实现并发?今晚突然又想起来,赶紧整理一下。

举例

var fs=require('fs');
var read=function (path) {
    return new Promise((resolve,reject)=>{
            fs.readFile(path,(err,data)=>{
                if(err){
                    reject(err)
                }else{
                    resolve(data)
                }
            })
    })
}
//继发读取
async function ReadTwo(){
    var f1=await read('./a.txt');
    var f2=await read('./b.txt');
}

解决方案

(1) promise.all()

async function readTwo{
	var p=Promise.all([read('./a.txt'),read('./b.txt')]);
	var [f1,f2]=await p
}

因为promise.all是并发,所以这两个请求真正达到并发

(2)没法描述,看代码

async function readTwo{
	var p1=read('./a.txt');
	var p2=read('./a.txt');
	f1=await p1;
	f2=await p2;
}

这两个请求真的是并发,因为它们是异步函数,但是获取结果后的赋值时继发


现在想想好简单,当时都不会。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值