使功能如确认

我正在尝试模拟 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');

}


RISEBY
浏览 152回答 1
1回答

斯蒂芬大帝

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();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript