fix(测试数据生成器): 修复 Worker 取消失效与规则存储静默失败
- 为生成任务引入 generationId,忽略过期 Worker 响应,避免取消后展示错误数据 - Worker 每 100 行让出事件循环,使 cancel 消息能被及时处理 - ruleStorage.setAll 返回写入结果,save/update/delete 在 QuotaExceeded 时返回失败 - 补充 useGenerator 与 ruleStorage 单元测试
This commit is contained in:
@@ -78,7 +78,9 @@ export function save(
|
||||
useCount: 0,
|
||||
};
|
||||
rules.unshift(newRule);
|
||||
setAll(rules);
|
||||
if (!setAll(rules)) {
|
||||
return null;
|
||||
}
|
||||
return newRule;
|
||||
}
|
||||
|
||||
@@ -95,7 +97,9 @@ export function save(
|
||||
updatedAt: now,
|
||||
};
|
||||
rules[index] = updatedRule;
|
||||
setAll(rules);
|
||||
if (!setAll(rules)) {
|
||||
return null;
|
||||
}
|
||||
return updatedRule;
|
||||
}
|
||||
|
||||
@@ -117,7 +121,9 @@ export function update(id: string, updates: Partial<DataRule>): DataRule | null
|
||||
updatedAt: Date.now(),
|
||||
};
|
||||
rules[index] = updatedRule;
|
||||
setAll(rules);
|
||||
if (!setAll(rules)) {
|
||||
return null;
|
||||
}
|
||||
return updatedRule;
|
||||
}
|
||||
|
||||
@@ -132,8 +138,7 @@ export function deleteRule(id: string): boolean {
|
||||
return false;
|
||||
}
|
||||
rules.splice(index, 1);
|
||||
setAll(rules);
|
||||
return true;
|
||||
return setAll(rules);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -165,7 +170,9 @@ export function duplicate(id: string, copySuffix = '(副本)'): DataRule | n
|
||||
|
||||
const rules = getAll();
|
||||
rules.unshift(newRule);
|
||||
setAll(rules);
|
||||
if (!setAll(rules)) {
|
||||
return null;
|
||||
}
|
||||
return newRule;
|
||||
}
|
||||
|
||||
@@ -267,11 +274,13 @@ export function clear(): void {
|
||||
/**
|
||||
* 保存所有规则到存储
|
||||
*/
|
||||
function setAll(rules: DataRule[]): void {
|
||||
function setAll(rules: DataRule[]): boolean {
|
||||
try {
|
||||
localStorage.setItem(STORAGE_KEY, JSON.stringify(rules));
|
||||
return true;
|
||||
} catch (error) {
|
||||
console.error('[ruleStorage] 保存规则失败:', error);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user