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();
添加回答
举报