From 2eab67d09fd28592ebc88053549b1497f9d73ce1 Mon Sep 17 00:00:00 2001 From: bighuixiang <472705331@qq.com> Date: Mon, 21 Jul 2025 22:48:36 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=B6=B2=E5=8C=96?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E4=B8=B2=E8=A1=8CPromise=E9=98=9F=E5=88=97?= =?UTF-8?q?=EF=BC=8C=E7=A1=AE=E4=BF=9D=E6=B6=B2=E5=8C=96=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E6=8C=89=E9=A1=BA=E5=BA=8F=E6=89=A7=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../managers/liquify/LiquifyManager.js | 62 ++++++++++++------- 1 file changed, 40 insertions(+), 22 deletions(-) diff --git a/src/component/Canvas/CanvasEditor/managers/liquify/LiquifyManager.js b/src/component/Canvas/CanvasEditor/managers/liquify/LiquifyManager.js index dfe573f7..5475501b 100644 --- a/src/component/Canvas/CanvasEditor/managers/liquify/LiquifyManager.js +++ b/src/component/Canvas/CanvasEditor/managers/liquify/LiquifyManager.js @@ -46,6 +46,9 @@ export class LiquifyManager { // 初始化液化管理器 this.initialize(); + + // 新增:液化操作串行Promise队列 + this._liquifyPromise = Promise.resolve(); } /** @@ -125,30 +128,45 @@ export class LiquifyManager { * @returns {ImageData} 处理后的图像数据 */ async applyLiquify(targetObject, mode, params, x, y) { - if (!this.enhancedManager || !targetObject) { - console.error("液化管理器未正确初始化"); - return null; - } - - console.log(`LiquifyManager.applyLiquify: 模式=${mode}, 坐标=(${x}, ${y}), 参数=`, params); - - try { - // 直接调用EnhancedLiquifyManager的applyLiquify方法 - // 避免重复设置参数,让EnhancedLiquifyManager处理参数设置 - const resultData = await this.enhancedManager.applyLiquify(targetObject, mode, params, x, y); - - // 确保返回结果数据 - if (!resultData) { - console.warn("液化变形没有返回结果数据"); - } else { - console.log("✅ 液化变形成功,返回图像数据尺寸:", resultData.width, "x", resultData.height); + // 串行化:等待上一次液化操作完成 + this._liquifyPromise = this._liquifyPromise.then(async () => { + if (!this.enhancedManager || !targetObject) { + console.error("液化管理器未正确初始化"); + return null; } - return resultData; - } catch (error) { - console.error("液化变形应用失败:", error); - return null; - } + console.log( + `LiquifyManager.applyLiquify: 模式=${mode}, 坐标=(${x}, ${y}), 参数=`, + params + ); + + try { + // 直接调用EnhancedLiquifyManager的applyLiquify方法 + const resultData = await this.enhancedManager.applyLiquify( + targetObject, + mode, + params, + x, + y + ); + if (!resultData) { + console.warn("液化变形没有返回结果数据"); + } else { + console.log( + "✅ 液化变形成功,返回图像数据尺寸:", + resultData.width, + "x", + resultData.height + ); + } + return resultData; + } catch (error) { + console.error("液化变形应用失败:", error); + return null; + } + }); + // 返回当前Promise,保证外部可await + return this._liquifyPromise; } /**