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

(半解决)大佬指教下js异步中如何添加延时-qingseyouran

Rate this post

谢谢几位坛朋的帮忙,不过还是不行。
只能弄个间接的,
把代码里的downloadPic(pageCurrent)删除,手动点可以下载一页,一直点可以顺序下载,到时再配合个自动化脚本。
有空再研究了。
有大佬的话,帮忙再研究研究。

下面代码下载太快了,过一会就会下载失败,想添加个延时,非码农,不懂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 昨天21:21

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

2楼 peng123 昨天21:06

不懂

3楼 VPSMarket 昨天21:08

settimeout 的回调里面再执行下载

4楼 qingseyouran 昨天21:08

不懂

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

5楼 qingseyouran 昨天21:10

settimeout 的回调里面再执行下载

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

8楼 靓坤 昨天21:24

用settimeout把fetch那里包住即可

9楼 qingseyouran 昨天21:32

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

不行,只能下载第一页

10楼 qingseyouran 昨天21:33

用settimeout把fetch那里包住即可

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

12楼 qingseyouran 昨天21:42

用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 昨天21:44

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

好,马上试下

14楼 qingseyouran 昨天21:55

替换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 昨天21:56

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

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

16楼 qingseyouran 昨天22:00

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

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

17楼 qingseyouran 昨天22:17

把代码里的downloadPic(pageCurrent)删除,手动点可以下载一页,一直点可以顺序下载,到时再配合个自动化脚本。
有空再研究了。

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

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

热门文章

评论 抢沙发

评论前必须登录!

立即登录   注册

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

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

登录

忘记密码 ?

切换登录

注册

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