From 623384b2cb97e513328b9ed28f4c2260af64e898 Mon Sep 17 00:00:00 2001 From: hymbz Date: Mon, 15 Jul 2024 18:50:03 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20:recycle:=20=E5=87=8F=E5=B0=91?= =?UTF-8?q?=E5=9C=A8=20dm5=20=E5=92=8C=20mangabz=20=E4=B8=8A=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E5=9B=BE=E7=89=87=E7=9A=84=E8=AF=B7=E6=B1=82=E6=AC=A1?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ComicRead.user.js | 22 ++++++++++++++++------ src/index.ts | 22 ++++++++++++++++------ 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/ComicRead.user.js b/ComicRead.user.js index 55dd9639..835f1aa1 100644 --- a/ComicRead.user.js +++ b/ComicRead.user.js @@ -10514,9 +10514,14 @@ const main = require('main'); // manhuaren 和 1kkk 的移动端上会直接用一个变量存储所有图片的链接 if (Array.isArray(unsafeWindow.newImgs) && unsafeWindow.newImgs.every(main.isUrl)) return unsafeWindow.newImgs; return dynamicUpdate(async setImg => { - for (let i = 0; i < imgNum;) { - const newImgs = await getPageImg(i + 1); - for (const url of newImgs) setImg(i++, url); + const imgList = new Set(); + while (imgList.size < imgNum) { + // 因为每次会返回指定页数及上一页的图片链接,所以加个1减少请求次数 + for (const url of await getPageImg(imgList.size + 1)) { + if (imgList.has(url)) continue; + imgList.add(url); + setImg(imgList.size - 1, url); + } } }, imgNum)(); }, @@ -10583,9 +10588,14 @@ const main = require('main'); getImgList: ({ dynamicUpdate }) => dynamicUpdate(async setImg => { - for (let i = 0; i < imgNum; i++) { - const newImgs = await getPageImg(i); - for (const url of newImgs) setImg(i, url); + const imgList = new Set(); + while (imgList.size < imgNum) { + // 因为每次会返回指定页数及上一页的图片链接,所以加个1减少请求次数 + for (const url of await getPageImg(imgList.size + 1)) { + if (imgList.has(url)) continue; + imgList.add(url); + setImg(imgList.size - 1, url); + } } }, imgNum)(), onNext: handlePrevNext('body > .container a[href^="/"]:last-child', '下一'), diff --git a/src/index.ts b/src/index.ts index 1ffa8a91..212a1fb7 100644 --- a/src/index.ts +++ b/src/index.ts @@ -353,9 +353,14 @@ try { return unsafeWindow.newImgs as string[]; return dynamicUpdate(async (setImg) => { - for (let i = 0; i < imgNum; ) { - const newImgs = await getPageImg(i + 1); - for (const url of newImgs) setImg(i++, url); + const imgList = new Set(); + while (imgList.size < imgNum) { + // 因为每次会返回指定页数及上一页的图片链接,所以加个1减少请求次数 + for (const url of await getPageImg(imgList.size + 1)) { + if (imgList.has(url)) continue; + imgList.add(url); + setImg(imgList.size - 1, url); + } } }, imgNum)(); }, @@ -434,9 +439,14 @@ try { name: 'mangabz', getImgList: ({ dynamicUpdate }) => dynamicUpdate(async (setImg) => { - for (let i = 0; i < imgNum; i++) { - const newImgs = await getPageImg(i); - for (const url of newImgs) setImg(i, url); + const imgList = new Set(); + while (imgList.size < imgNum) { + // 因为每次会返回指定页数及上一页的图片链接,所以加个1减少请求次数 + for (const url of await getPageImg(imgList.size + 1)) { + if (imgList.has(url)) continue; + imgList.add(url); + setImg(imgList.size - 1, url); + } } }, imgNum)(), onNext: handlePrevNext(