如何添加延迟确认框?

时间:2018-07-24 23:06:50

标签: javascript jquery html

如何在确认框的返回语句上添加延迟?我已经尝试过使用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 个答案:

答案 0 :(得分:0)

您长官,需要一个Promise

但是有两件事

  1. https://caniuse.com/#feat=promises中不支持它们。您可能需要使用Babel或Typescript来填充它们。如果您不想编译JS,请考虑使用Bluebird获得承诺。
  2. 特别是在您的示例中,您希望在单击时导航到URL。当承诺解决后,您将要更改浏览器的位置。 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)
  })