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();
添加回答
舉報