可以使用async/await结合setTimeout的方式来解决这个问题,具体代码如下所示:
// 弹出Sweet Alert弹出窗口
Swal.fire({
title: '你确定要离开吗?',
text: "你输入的数据可能不会被保存!",
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
cancelButtonColor: '#d33',
confirmButtonText: '是的,离开!',
cancelButtonText: '取消'
}).then(async (result) => {
if (result.isDismissed) { // 如果用户取消
e.preventDefault() // 阻止默认行为
} else {
// 如果用户确认离开,则等待1秒钟后再执行跳转操作
await new Promise(resolve => setTimeout(resolve, 1000))
window.location.href = new_url
}
})
在上面的示例代码中,我们注意到我们在执行操作之前使用了async关键字来声明一个异步函数。在用户确认离开页面时,我们使用了一个Promise来创建一个1秒钟的计时器,以便在该时间到达时执行跳转操作。由于我们使用了异步/等待方式,因此我们可以确保计时器等待完成后再执行跳转,因此可以避免Sweet Alert弹出框在不到1秒钟的时间内消失的问题。