关于JS的继发与并发

656 阅读1分钟

之前没有去详细的了解继发关系于并发关系,这些都是很基础的东西,自从阮一峰老师的ES6文档中async函数里再次看到这个关系,重新了解下。

继发:

async function fun(){
  let foo = await fun1()
  let bar = await fun2()
//这样的写法是继发的 相当于foo执行完毕后再执行bar
}

以上代码fun1与fun2是两个独立的异步操作,被写成继发关系比较耗时,只有fun1执行完才会执行fun2,如果互不依赖的话完全可以写成同时触发

并发:

//第一种
async function fun(){
    let fooFun = fun1();
    let barFun = fun2();
    let foo = await fooFun;
    let bar = await barFun;
}

//第二种
let [foo,bar] = await Promise.all([fun1(),fun2()])

以上两种写法皆是同时触发,缩短了程序执行时间