You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SweetAlert2 v10切换弹窗时await后续代码不执行问题排查

SweetAlert2 v10与v11弹窗切换时Promise行为差异原因分析
  • 核心差异源于版本间的Promise触发逻辑调整

    • v10版本中,每个弹窗的Promise仅在该弹窗被主动关闭(比如调用Swal.close()、点击弹窗关闭按钮、点击遮罩层等)时才会resolve。直接打开新弹窗并不会触发旧弹窗的关闭事件,因此旧弹窗对应的await Swal.fire()会一直处于等待状态,后续代码无法执行。
    • v11版本重构了弹窗管理机制,将“被新弹窗替换”纳入了旧弹窗的关闭触发条件。此时打开新弹窗时,旧弹窗的Promise会自动resolve为{ isDismissed: true },await之后的代码就能正常执行,完全符合文档描述的行为。
  • v10的临时解决方案
    如果在v10中需要实现类似v11的效果,必须在打开新弹窗前手动调用Swal.close(),手动触发旧弹窗Promise的resolve,这样后续代码才能继续执行。

内容的提问来源于stack exchange,提问作者MohammadMehdi.Takalloo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 23:39:51