什么时候用并发什么时候用继发? 同时有多个io操作,彼此不依赖,此时应该并发,时长是这多个操作中最长的那个(可能会多一点)。
多个io操作,2需要1的结果,3需要2的结果,此时应该继发,时长是这多个io的总和(还要多)。
//模拟一个耗时操作
function get(a){
return new Promise(function(resolve,reject){
setTimeout(function(){
console.log(a);
resolve();
},2000)
})
};
/*测试*/
async function test(){
try{
//1.继发
/*await get("11111111111");
await get("22222222222");
await get("33333333333");
await get("44444444444");*/
//2.并发
/*let a= get("11111111111");
let b= get("22222222222");
let c= get("33333333333");
let d= get("44444444444");
await a;
await b;
await c;
await d;*/
//3继发
/*let a= get("11111111111");
await a;
let b= get("22222222222");
await b;
let c= get("33333333333");
await c;
let d= get("44444444444");
await d;*/
//4并发
/*await Promise.all([
get("11111111111"),
get("22222222222"),
get("33333333333"),
get("44444444444"),
]);*/
//5继发
/*let pArr=[
11111111111,
22222222222,
33333333333,
44444444444,
];
for(let p of pArr){
await get(p);
}*/
//6并发
/*let pArr=[
11111111111,
22222222222,
33333333333,
44444444444,
];
pArr.forEach(async p=>{
await get(p);
});
*/
}catch(e){
console.error(e)
}
}
test();
依次放开注释1-6处代码,在控制台输入
node index
观察打印