楼主:
red0whale (red whale)
2016-05-22 15:00:30<script>
var fn = function(url){
// bla bla bla...
};
</script>
<input type="button" onclick="fn()" value="Execute">
<input type="button" onclick="???" value="Abort">
如上,当使用者按下“Execute”按钮时,“fn()”函数就会被执行。
假设fn()函数会执行很久,
如果使用者想在中途停止这个函数的执行(按“Abort”按钮),
请问我该怎么做?
如果说“fn()”函数有哪些的话,就像AJAX或其他可能要跑很久的程式
当然,除了AJAX之外还有可能是其他哩哩抠抠的函数。
不管,反正就是要强制让该函数停止的方法为何?
作者:
Kenqr (function(){})()
2016-05-22 16:05:00先检查某个变量为true时,再setTimeout按abort钮时就去改变那个变量的内容
一定要使用timeout系列函数 否则fn执行中使用者是完全不可能做到任何事的 包括卷卷轴或点击按钮都不行画面会整个当掉 因为JavaScript是单执行绪的执行环境使用者永远只可能在fn执行一段落后才可能动作
作者:
eight0 (欸XD)
2016-05-22 22:52:00fn() 并没有执行很久,而是执行“很多次”Abort 并不是在 fn() 执行中被按下的,而是在两次 fn() 之间被按下的fn() 和 setTimeout(fn) 的效果是不一样的
用 flag吧~true时可跑,false return掉
eight0说的没错 还有像ajax在发送出去到回来之间function也是没在执行的所以能中间中断的function 只可能是setTime系列那种本身自己就不断中断不断执行的function 方法其他人说很多了 但你原本问的那种直接中断function是不允许的
作者:
mirtac (mirtac)
2016-05-23 14:04:00基本上是做不到的, 除非使用worker, 但要注意 worker中不能存取 dom , 还有较旧的browser不支援worker