如何添加延迟确认框



如何在确认框的返回语句中添加延迟?我试过使用setTimeout,但它不起作用。

我的想法是显示一个模态5秒钟,然后将用户带到注销页面。

<a href='signout.cgi?id=$key' onclick='singOutConfirm()'> Sign Out</a>
function singOutConfirm(){
var c = confirm("Confirm Sign Out!");
var modal = document.getElementById('myModal'); 
console.log(c);
if(c == true ) {  
setTimeout(function(){ 
return c;
}, 5000); 
} 
return c;

先生,您需要一个承诺。

但是有两件事

  1. 它们在ie中不受支持https://caniuse.com/#feat=promises.您可能需要使用Babel或Typescript来对它们进行多重填充。如果你不想编译JS,可以考虑使用Bluebird作为promise
  2. 特别是在您的示例中,您希望在单击时导航到URL。当promise解析时,您将想要更改浏览器的位置。window.location.href = 'signout.cgi?id=$key'

function signOutConfirm (e) {
e.preventDefault()
const c = confirm("Confirm Sign Out!");
const modal = document.getElementById('myModal'); 
console.log(c);
if(c) {  
return new Promise((resolve) => {
setTimeout(() => {
window.location.href = 'signout.cgi?id=$key'
resolve(c)
}, 5000); 
})
} 
return Promise.resolve(c);
}
console.time('Signing out')
signOutConfirm()
.then(c => {
console.timeEnd('Signing out')
console.log(c)
})