站点图标 谷姐靓号网

大佬指教下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

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

退出移动版