前端大佬进来给给指导意见

2020-10-22 09:37:18 +08:00
 cwz346852114

需求是: 后端通过接口把下载文件的 url 给我 我通过 for 循环生成 a 标签 然后把 url 绑定到 a 标签的 href 上 然后触发点击事件 进行下载 但是 每次浏览器只能下载最后一个文件

我 console 过 url 不是同一个数据

开始是以为太快了 浏览器没反应过来 然后我开了个定时器 还是只能下载最后一个

这个我在谷歌和 ie 上试过 都只能下载最后一个文件
问下大佬 是因为浏览器机制的限制还是什么问题

1611 次点击
所在节点    问与答
11 条回复
Jiyunz
2020-10-22 09:47:15 +08:00
问问题不上代码¿
qtz2liu
2020-10-22 09:50:26 +08:00
听上去是闭包啊
ZinWUT
2020-10-22 09:51:29 +08:00
应该是 for 循环定义了 var 变量,结果 var 变量全局只有一个?

参考 : https://es6.ruanyifeng.com/#docs/let let -- 基本用法 子章节
Yumwey
2020-10-22 09:51:33 +08:00
闭包
shintendo
2020-10-22 09:52:18 +08:00
典型的闭包没写好的现象
你为啥要 console,直接检查元素看 a 标签上的 href 是不是都一样
dinjufen
2020-10-22 09:52:32 +08:00
你这没代码别人只能靠猜
jonsnow93
2020-10-22 09:52:59 +08:00
感觉像是前端经典的循环与闭包问题
michaelcheng
2020-10-22 09:53:19 +08:00
浏览器限制吧,上一个下载请求会被自动 canceled 。
看下: https://segmentfault.com/a/1190000016771027
noe132
2020-10-22 09:56:09 +08:00
点链接就是浏览器跳转啊
你一个 tab 还能影分身加载 10 个链接?

手动点链接点错了,都可以在打开之前强行点正确的链接改回来,你这连一个 eventloop 都没跑完就点了 10 个链接,当然只有最后一个有效了
qqqq11
2020-10-22 10:04:33 +08:00
上代码
loveToMy1
2020-10-22 10:53:31 +08:00
不上代码靠人瞎猜吗😂

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/717317

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX