我在 JavaScript 中有一个很长的函数,我将在某些时候暂停它。我知道我可以使用setTimeout(myFunction, 100)
and clearTimeout()
。但是,据我所知,使用后setTimeout(myFunction, 100)
我的函数将在 100 毫秒后从第一行开始执行,此后每 100 毫秒执行一次。我想知道是否可以在第 50 行暂停我的函数,然后在第 51 行之后立即恢复它。这可能吗?
这是一种方法。确保您始终需要的所有变量都在外部函数中声明。由于 Javascript 作用域规则,它们可以在每个子函数中访问。
function paused() {
// Define variables you'll need throughout the function.
var var1, var2, var3;
// First part of the function
function part1() {
// 50 lines
}
// Second part of the function
function part2() {
// 50 lines
}
setTimeout(part1, 0);
setTimeout(part2, 100);
}
假设有很多部分,超时甚至可以放入循环中:
function paused() {
// Define variables you'll need throughout the function.
var var1, var2, var3;
// All function parts.
var parts = [
function() {
// 50 lines
},
function() {
// 50 lines
},
function() {
// 50 lines
}
// More?
];
for (var i = 0; i < parts.length; i++) {
setTimeout(parts[i], i * 100);
}
}
请务必谨慎使用this
,因为内部函数将重新绑定它。
请注意,全局函数将always由于 Javascript 事件队列的工作方式,按顺序执行暂停的部分,无论每个部分是否花费超过 100 毫秒。当事件队列发现多个setTimeout可以同时执行时,先排队的优先。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)