feat: 添加液化操作串行Promise队列,确保液化操作按顺序执行

This commit is contained in:
bighuixiang
2025-07-21 22:48:36 +08:00
parent b8bf8f7468
commit 2eab67d09f

View File

@@ -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;
}
/**