我有一组 URL,我必须使用 JS / Cordova 异步函数下载它们。我当前的实现看起来像这样(简化):var urls = [ ...... many many ...... ]var arrayPointer = 0;downloadData();function downloadData() { if(arrayPointer >= urls.length) { do_something_else(); return false } downloadURL(urls[arrayPointer++],successDownloadCallback,failDownloadCallback); return false;}function failDownloadCallback() { logError(); downloadData(); return false;}function successDownloadCallback(data) { saveDataToFile(data,saveSuccessCallback,saveFailCallback); return false;}function saveFailCallback() { logError(); downloadData(); return false;}function saveSuccessCallback() { downloadData(); return false;}不幸的是,我有时会收到“超出最大调用堆栈大小”的错误。有一个更好的方法吗?
1 回答
波斯汪
TA贡献1811条经验 获得超4个赞
我之前遇到过这个问题,并设法通过使用异步循环 (for) 解决了这个问题,这里是一个例子
const downloadAllfiles = async (arr) => {
for(const x of arr) {
const file = await downloadURL(x.path);
await saveFile(file);
}
console.log('done with all files');
}
添加回答
举报
0/150
提交
取消