diff --git a/src/apis/index.js b/src/apis/index.js index 5e1191f..bad3a4d 100644 --- a/src/apis/index.js +++ b/src/apis/index.js @@ -451,6 +451,11 @@ export const apiTranslate = async ({ const { apiSlug, batchInterval, batchSize, batchLength } = apiSetting; const key = `${apiSlug}_${fromLang}_${toLang}`; const queue = getBatchQueue(key, handleTranslate, { + batchInterval, + batchSize, + batchLength, + }); + const tranlation = await queue.addTask(text, { from, to, fromLang, @@ -460,11 +465,7 @@ export const apiTranslate = async ({ glossary, apiSetting, usePool, - batchInterval, - batchSize, - batchLength, }); - const tranlation = await queue.addTask(text); if (Array.isArray(tranlation)) { [trText, srLang = ""] = tranlation; } else if (typeof tranlation === "string") { diff --git a/src/libs/batchQueue.js b/src/libs/batchQueue.js index bc2ad3b..8782f1d 100644 --- a/src/libs/batchQueue.js +++ b/src/libs/batchQueue.js @@ -16,15 +16,14 @@ const BatchQueue = ( batchInterval = DEFAULT_BATCH_INTERVAL, batchSize = DEFAULT_BATCH_SIZE, batchLength = DEFAULT_BATCH_LENGTH, - ...args } = {} ) => { const queue = []; let isProcessing = false; let timer = null; - const sendBatchRequest = async (payloads) => { - return taskFn(payloads, args); + const sendBatchRequest = async (payloads, batchArgs) => { + return taskFn(payloads, batchArgs); }; const processQueue = async () => { @@ -66,7 +65,8 @@ const BatchQueue = ( try { const payloads = tasksToProcess.map((item) => item.payload); - const responses = await sendBatchRequest(payloads); + const batchArgs = tasksToProcess[0].args; + const responses = await sendBatchRequest(payloads, batchArgs); if (!Array.isArray(responses)) { throw new Error("responses format error"); } @@ -99,10 +99,10 @@ const BatchQueue = ( } }; - const addTask = (data) => { + const addTask = (data, args) => { return new Promise((resolve, reject) => { const payload = data; - queue.push({ payload, resolve, reject }); + queue.push({ payload, resolve, reject, args }); if (queue.length >= batchSize) { processQueue(); @@ -132,12 +132,12 @@ const queueMap = new Map(); /** * 获取批处理实例 */ -export const getBatchQueue = (key, taskFn, args) => { +export const getBatchQueue = (key, taskFn, options) => { if (queueMap.has(key)) { return queueMap.get(key); } - const queue = BatchQueue(taskFn, args); + const queue = BatchQueue(taskFn, options); queueMap.set(key, queue); return queue; }; diff --git a/src/views/Options/Apis.js b/src/views/Options/Apis.js index 06d00e5..96ed66e 100644 --- a/src/views/Options/Apis.js +++ b/src/views/Options/Apis.js @@ -58,6 +58,7 @@ function TestButton({ api }) { toLang: "zh-CN", apiSetting: { ...api }, useCache: false, + usePool: false, }); if (!text) { throw new Error("empty result"); @@ -701,7 +702,7 @@ function ApiFields({ apiSlug, isUserApi, deleteApi }) { > {i18n("save")} - +