window.location.href在每次第二次迭代中均不起作用

时间:2019-11-22 13:34:17

标签: javascript typescript foreach

我正在尝试使用window.location.href下载多个文件。我从s3获取文件url,并将其推送到具有链接的数组中。它只在第一次迭代中工作。在第二次迭代中,文件未下载但发生了迭代。预先感谢。

var urls = [
    "https://www.s3.com/files1",
    "https://www.s3.com/files2",
    "https://www.s3.com/files3"
];
urls.forEach(url => {
    window.location.href = url;
})

2 个答案:

答案 0 :(得分:0)

考虑获取或发出XHR请求的其他API。然后,为每个呼叫指定要返回的内容(我将Blob类型)。

所有动作完成(获取承诺)后,您应该得到结果(res)。如果发生任何错误,请在您的catch块中进行处理。

let arr = [];
const urls = [
  "https://www.s3.com/files1",
  "https://www.s3.com/files2",
  "https://www.s3.com/files3"
];



Promise
  .all(urls.map(url => fetch(url).then(res => res.blob())))
  .then(res => {
    console.log('files here', res);
  }).catch(err => console.log('error occured while fetching', err))

答案 1 :(得分:0)

在第一次迭代中,URL会更改,然后浏览器将不再运行您编写的脚本。

它运行与当前活动的新URL相关联的脚本。 即您的情况为“ https://www.s3.com/files1”。

正确的方法是使用fetch或axios来访问这些网址。