promise.all中可以动态参数?

fun,fun2,fun3方法都是async实现的ajax异步方法。

async init(){
    let res = await Promise.all([fun(),fun2(),fun3()]);
    ....
}

后面,有个需求init调用时候,根据参数决定fun3是否调用。
Promise.all动态参数,自己试着写的方法

async init(isFun3){
    let arr = [fun(),fun2()];
    isFun3 && arr.push(fun3());
    let res = await Promise.all(arr);
    ....
}

结果是,成功了。
这我就蒙了,

arr = [fun(),fun2()]这种不应该是两个函数返回值组成的数组才对吗。

我这里又没有await阻断,他也还不是Promise.all的参数,只是普通的变量赋值操作。
为什么这个时候两个函数没有被调用.

阅读 7.5k
2 个回答

调用了,只是你感觉不到。而且 Promise.all(),他们是否执行完成,并不清楚,是 await 之后才保证完成并拿到最终的结果。但实际上,有可能 Promise.all 之前就已经完成了,只不过是通过 Promise.all 来获取完成后的返回值而已。

会执行,fun(),fun2()难道不是返回的异步请求方法,或者promise?不然最后Promise.all()不会成功
可以贴出代码

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题