我正在使用 promises to handle 来处理模式对话框:当用户按下 OK 按钮时解决,当取消或关闭时拒绝。
为了解析和关闭模态,我使用了以下方法:
let modalResolve, modalReject;
modal.promise = new Promise<any>((resolve, reject) => {
modalResolve = resolve;
modalReject = reject;
});
modal.close = (result) => {
if (modal.isOpen) {
modalResolve(result);
}
};
modal.dismiss = (reason) => {
if (modal.isOpen) {
modalReject(reason);
}
};
modal.promise.finally(() => modalElement.remove());
当取消按钮在模式中触发此方法时:
modal.dismiss('close')
一切正常,模态隐藏,但使用此描述和堆栈记录控制台错误:
Error: Uncaught (in promise): close
at resolvePromise (zone.js:814)
at resolvePromise (zone.js:771)
at eval (zone.js:873)
at ZoneDelegate.invokeTask (zone.js:421)
at Object.onInvokeTask (core.js:4751)
at ZoneDelegate.invokeTask (zone.js:420)
at Zone.runTask (zone.js:188)
at drainMicroTaskQueue (zone.js:595)
at ZoneTask.invokeTask [as invoke] (zone.js:500)
at invokeTask (zone.js:1540)
这很奇怪,因为模态无论如何都被关闭了,而且这个错误并没有显示在我使用的所有模态上,只是在其中一些模态上。解析不会产生这种错误。
最佳答案
您必须捕获
它以防止错误
modal.promise.then(hideFn, hideFn).catch((res) => {});
关于javascript - 拒绝 promise 会抛出 "Uncaught (in promise)",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49996919/