javascript - 制作类似确认的功能

标签 javascript

我正在尝试模拟javascript的确认功能。但这不起作用。我哪里出错了?

function func(){
    $('body').on('click', '.true', function() {
        return true;
    });

    $('body').on('click', '.false', function() {
        return false;
    });
}


function test(){
    var r = func();

    if(r==false){
        alert('false');
        return false;
    }

    alert('it works');
}

jsfiddle

最佳答案

confirm 暂停浏览器的代码执行,直到单击按钮。这就是为什么 confirm 可以同步返回并且表现得像常规函数。您无法从 JS 中停止浏览器的执行,因此这是完全不可能的(或者如果您这样做,用户将无法输入任何内容)。

但是,您可以创建并返回一个 promise (然后可以异步解决):

 function func(){
  return new Promise((resolve, reject) => {
    $('body').once('click', '.true', function() { // Only listen to *one* click instead of keeping this listener forever
        resolve(true); // resolve the promise if clicked
    });

   $('body').once('click', '.false', function() {
     resolve(false);
   });
  });
}

然后可以用作:

 async function test(){ // has to be async, so that the execution can be haltet
   var r = await func(); // halts till click

   if(!r) { // reads "if not r"
    alert('false');
  } else alert('it works');
}

test();

Read On

关于javascript - 制作类似确认的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58545167/

相关文章:

javascript - Kagami/ffmpeg.js webm to images got Unable to find a suitable output format for '%04d.jpg' 错误

javascript - 提交表单后 Watir 文本框输入不持久(重置为以前的文本框输入)

javascript - getUserMedia() 的回调事件

javascript - 是否可以将 Javascript 函数参数传递给 PHP?

javascript - 如何同步在不同时间启动/重启的 CSS 动画

javascript - 如何在MongoDB中存储用户的大量消息?

javascript - html中如何让页面从链接跳转?

javascript android window.onorientationchange 连续触发

javascript - 通过javascript动态获取iframe的内容高度

java - 如何使用 htmlunit 单击 javascript 按钮?