我正在尝试模拟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');
}
最佳答案
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();
关于javascript - 制作类似确认的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58545167/