fix(#2): Promise泄漏 — confirm/prompt 添加10秒安全超时,防止永不resolve

This commit is contained in:
tianhao
2026-06-16 12:40:39 +08:00
parent 9ce1809928
commit 2e361d40e8
+13 -5
View File
@@ -746,6 +746,10 @@ const meToast = {
}
return new Promise((resolve) => {
let resolved = false;
const safeResolve = (val) => { if (!resolved) { resolved = true; clearTimeout(safetyTimeout); resolve(val); } };
const safetyTimeout = setTimeout(() => safeResolve(false), 10000);
const t = this._emit({
...opts,
type: opts.type || 'warning',
@@ -764,14 +768,14 @@ const meToast = {
if (confirmBtn) {
confirmBtn.addEventListener('click', () => {
t.close();
resolve(true);
safeResolve(true);
});
}
if (cancelBtn) {
cancelBtn.addEventListener('click', () => {
t.close();
resolve(false);
safeResolve(false);
});
}
}, 0);
@@ -791,6 +795,10 @@ const meToast = {
}
return new Promise((resolve) => {
let resolved = false;
const safeResolve = (val) => { if (!resolved) { resolved = true; clearTimeout(safetyTimeout); resolve(val); } };
const safetyTimeout = setTimeout(() => safeResolve(null), 10000);
const t = this._emit({
...opts,
type: opts.type || 'info',
@@ -813,7 +821,7 @@ const meToast = {
input.addEventListener('keydown', (e) => {
if (e.key === 'Enter') {
t.close();
resolve(input.value);
safeResolve(input.value);
}
});
}
@@ -821,14 +829,14 @@ const meToast = {
if (submitBtn) {
submitBtn.addEventListener('click', () => {
t.close();
resolve(input?.value || null);
safeResolve(input?.value || null);
});
}
if (cancelBtn) {
cancelBtn.addEventListener('click', () => {
t.close();
resolve(null);
safeResolve(null);
});
}
}, 0);