<script>
var fn = function(url){
// bla bla bla...
};
</script>
<input type="button" onclick="fn()" value="Execute">
<input type="button" onclick="???" value="Abort">
就像上面一样,当用户单击“执行”按钮时,fn()
函数将被执行。
假设 fn()
函数会运行很长很长的时间,如果用户想中途停止这个函数的执行,该怎么办?
最佳答案
JavaScript 中的函数是阻塞的——这意味着函数运行时所有内容[1]都会卡住。屏幕不重画,不处理鼠标点击,不处理键盘事件。
在函数完成之前不会发生任何事情。
解决这个问题的唯一方法是使用异步
编码以小块的形式运行代码。
有许多工具可供使用,包括:
setTimeout
并保留数组索引- 生成器函数(不是特定于节点的)
我建议查看async
工具,然后提出另一个关于如何使函数非阻塞的问题。
[1] 出于本次讨论的目的
关于javascript - 有没有办法强制中止正在执行的 JavaScript(或 jQuery)函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37371187/