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的参数,只是普通的变量赋值操作。
为什么这个时候两个函数没有被调用.
调用了,只是你感觉不到。而且
Promise.all()
,他们是否执行完成,并不清楚,是await
之后才保证完成并拿到最终的结果。但实际上,有可能Promise.all
之前就已经完成了,只不过是通过Promise.all
来获取完成后的返回值而已。