暂停函数执行直到另一个函数返回

Ker*_*ter 2 javascript jquery magento

我想要替换Magento的alert()和confirm()对话框的实现.虽然alert()替换是微不足道的,但我不确定如何处理confirm()对话框.有没有办法阻止JavaScript继续,直到返回一个函数?这是否需要可能导致浏览器崩溃的循环?

所以例如,我需要替换这样的代码:

<form action="" method="POST">
   <input type="submit" onclick="return confirm('Are you sure?');" value="Delete">
</form>
Run Code Online (Sandbox Code Playgroud)

与...

<form action="" method="POST">
   <input type="submit" onclick="return myCustomConfirm('Are you sure?');" value="Delete">
</form>
Run Code Online (Sandbox Code Playgroud)

或其他场景,例如:

<script>
   var delete = confirm('Are you sure?');
   if (delete) {
       doSomething();
   }
</script>
Run Code Online (Sandbox Code Playgroud)

与...

<script>
   var delete = myCustomConfirm('Are you sure?');
   if (delete) {
       doSomething();
   }
</script>
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,myCustomConfirm()将打开一个Bootstrap模式,用户必须单击"Okay","Cancel"或关闭模态.如果"Okay",则返回true,否则返回false.

我不想做回调,因为这会导致更多的重构而不是理想的.这有可能以另一种方式吗?

谢谢!

Jua*_*des 5

这不可能.您不能编写阻止执行的JavaScript函数,收集用户输入并根据用户输入返回值.阻止执行和等待用户输入的唯一方法是使用confirm.

如果要使用自定义对话框,则必须重构代码以使用回调.

请参阅模拟Javascript'警报'阻止性质