让我们说这个功能正在运行:
var runningFunction = "none",
foo = 1000,
counter = 0;
function someFunc() {
runningFunction = "someFunc";
from(var i = 0; i < foo; i++) {
counter++;
}
}
我希望打破这一点,比如说window.resize检测
$(window).resize(function() {
// break someFunc function
// say scenario broke at count = 595
}
我该怎么做?我可以写一些函数正在运行的变量,如上所示。
答案 0 :(得分:3)
你做不到。函数中的所有代码都将在一个块中运行。其他代码(如resize事件侦听器)将一直等到函数完成。
如果你真的想“暂停”它,你需要将其分解为不同的功能,并使用return[[1]]
来调用下一个。这将允许其他代码在中间运行。
setTimeout
var timer,
counter = 0,
result = document.getElementById('result');
function someFunc() {
counter++;
result.textContent = counter;
if(counter < 1e5) timer = setTimeout(someFunc, 0);
}
someFunc();
document.getElementById('stop').addEventListener('click', function() {
clearTimeout(timer);
});