forEach内部有异步函数,如何令forEach内部的异步都执行完再让程序继续执行
当遇上需要foreach执行结束后再进行操作时使用
const downloadAll = () => {
let arr: { name: string; content: Promise<string | undefined> }[] = [];
chartRefs.value.forEach((element, index) => {
let p = new Promise((resolve, reject) => {
resolve({
name: index + '.png',
content: element.captureAndDownloadAll(),
});
});
arr.push(p);
});
Promise.all(arr).then((res) => {
downloadImagesAsZip(res);
});
};
如果不使用Promise.all,会产生执行downloadImagesAsZip的时候,数组arrr是空数组的情况,因此,我们需要等foreach全部执行完后再downloadImagesAsZip()