为了账号安全,请及时绑定邮箱和手机立即绑定

使功能如确认

使功能如确认

RISEBY 2021-12-02 16:45:40
我正在尝试模拟 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');}
查看完整描述

1 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

confirm 停止浏览器的代码执行,直到单击按钮。这就是为什么confirm可以同步返回并表现得像一个普通函数。你不能从 JS 中停止浏览器的执行,所以这是完全不可能的(或者如果你这样做了,用户就不能输入任何东西)。


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


 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();


查看完整回答
反对 回复 2021-12-02
  • 1 回答
  • 0 关注
  • 151 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信