我有一个包含 url 的数组,我必须遍历它才能下载 HTML 文件。如果一个 url 没有加载的问题,例如由于连接问题,它的 HTML 文件将不会被下载,因为循环进入下一次迭代。我的目标是,如果发生错误,程序应该重复当前迭代 3 次,然后转到下一次迭代。
这是我想要实现的目标:
let filteredUrls = [ 'url1', 'url2', 'url3'];
for (let id in filteredUrls) {
let currentUrl = filteredUrls[id];
try {
//open currentUrl, do some stuff...
} catch (error) {
//if there's an error, repeat the current loop 3 times,
//after that, move to the next iteration
}
}
我该怎么做?有办法吗?
最佳答案
如果您的下载代码是异步的,那么您可能希望使用递归函数,而不是仅仅再次重复循环。
let filteredUrls = [ 'url1', 'url2', 'url3'];
for (let id in filteredUrls) {
let currentUrl = filteredUrls[id];
downloadFile( currentUrl, 0 );
}
function downloadFile( url, tryCount ) {
try {
//open currentUrl, do some stuff...
} catch (error) {
tryCount++;
if ( tryCount < 3 ) {
downloadFile( url, tryCount );
}
}
}
关于javascript - 如何在 for 循环中对具有精确索引的元素重复迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56797137/