谷姐:我们都是谷歌迷
We are all Google fans

大佬指教下js异步中如何添加延时-qingseyouran

Rate this post

下面代码下载太快了,过一会就会下载失败,想添加个延时,非码农,不懂js,网上找了半天弄不好,麻烦大佬指教下。

if(document.location.pathname.indexOf("onlinebook")>0){
document.body.oncontextmenu = ""
var pageTotal = 0;
var picUrl = ""
//从0开始,为实际页码减一
var pageCurrent = 0;
//下载指定页面图片
function downloadPic(page) {
picUrl = path + "&pageNo=" + page ;
fetch(picUrl).then(res => res.blob().then(blob => {
var a = document.createElement('a');
var url = window.URL.createObjectURL(blob);
var filename = page + '.jpg';
a.href = url;
a.download = filename;
a.click();
window.URL.revokeObjectURL(url);
if(pageCurrent<pageTotal){
pageCurrent++;
downloadPic(pageCurrent);
}
}))
}
//批量下载
function batchDownload() {
pageTotal = document.getElementById("sumNumb").innerText - 1;
downloadPic(pageCurrent)
}
//创建下载按钮
var downloadBtn = document.createElement("a");
downloadBtn.innerText = "批量下载全书";
downloadBtn.onclick = function () { batchDownload() };
document.querySelector("body > div.divcenter > div.bq > div.bqmiddle > div.ml").appendChild(downloadBtn);
}

热议
推荐楼 HOH 半小时前

不管啥语言,最烦的就是匿名方法

2楼 peng123 1小时前

不懂

3楼 VPSMarket 1小时前

settimeout 的回调里面再执行下载

4楼 qingseyouran 1小时前

不懂

略懂c和python,不懂js,看不懂执行逻辑

5楼 qingseyouran 1小时前

settimeout 的回调里面再执行下载

settimeout弄了好久,不知道加哪里才可以
加最后面那一段里?

8楼 靓坤 半小时前

用settimeout把fetch那里包住即可

9楼 qingseyouran 半小时前

kapai 发表于 2022-3-6 21:20

不行,只能下载第一页

10楼 qingseyouran 半小时前

用settimeout把fetch那里包住即可

好的。我试下,这个fetch套得太多

12楼 qingseyouran 半小时前

用settimeout把fetch那里包住即可

setTimeout(fetch(picUrl).then(res => res.blob().then(blob => {
var a = document.createElement('a');
var url = window.URL.createObjectURL(blob);
var filename = page + '.jpg';
a.href = url;
a.download = filename;
a.click();
window.URL.revokeObjectURL(url);
if(pageCurrent<pageTotal){
pageCurrent++;
downloadPic(pageCurrent);
}
})), 9000)

不行,还是下得飞起

13楼 qingseyouran 28分钟前

替换fetch(picUrl).then(res => res.blob().then(blob => { 里的试下,能不能用我也不知道,因为我也是菜 ...

好,马上试下

14楼 qingseyouran 17分钟前

替换fetch(picUrl).then(res => res.blob().then(blob => { 里的试下,能不能用我也不知道,因为我也是菜 ...

fetch(picUrl).then(res => res.blob().then(blob => {
new Promise((resolve, reject) => {
setTimeout(() => {
var a = document.createElement('a');
var url = window.URL.createObjectURL(blob);
var filename = page + '.jpg';
a.href = url;
a.download = filename;
a.click();
resolve()
}, 1000);
}).then(_ => {
window.URL.revokeObjectURL(url);
if(pageCurrent<pageTotal){
pageCurrent++;
downloadPic(pageCurrent);
}
})
}))
}

也只能下第一页

15楼 qingseyouran 16分钟前

替换fetch(picUrl).then(res => res.blob().then(blob => { 里的试下,能不能用我也不知道,因为我也是菜 ...

这个嵌套回调,完全看不懂

16楼 qingseyouran 12分钟前

kapai 发表于 2022-3-6 21:20

console提示
Uncaught ReferenceError: downloadPic is not defined
at <anonymous>:1:1

申明:本文内容由网友收集分享,仅供学习参考使用。如文中内容侵犯到您的利益,请在文章下方留言,本站会第一时间进行处理。

未经谷姐允许不得转载:谷姐靓号网 » 大佬指教下js异步中如何添加延时-qingseyouran
分享到: 生成海报

热门文章

评论 抢沙发

评论前必须登录!

立即登录   注册

买Google Voice认准【谷姐靓号网】

Google Voice靓号列表Google Voice自助购买
切换注册

登录

忘记密码 ?

切换登录

注册

我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活