我正在浏览器中训练神经网络。我正在考虑调用一个可以运行较长时间(过夜)的函数,并且我希望能够以非致命的方式终止函数执行(这样我就不会丢失我的数据)快乐。
我正在寻找一个通用的解决方案,它允许任何循环函数从控制台或 ui 元素以其当前状态终止,并进行最小的更改。
我看过 this question但是我的有点不同;现在是 2016 年,我们有网络 worker 和帖子消息,他们似乎会提供解决方案的工具。
最佳答案
好吧...如果你使用递归,那么暂停就可以了。但遗憾的是我不推荐它,因为调用堆栈大小会导致迭代次数 > 13000 的错误。
为了证明这种可能性,我必须在下一次迭代之前包含一个 setTimeout,因为否则对于 10000 操作太快而无法在其间暂停:
var pause = false;
var pause_iteration;
function recursiveLoop(iteration, maximum) {
if (iteration === maximum) {
console.log("Loop finished!");
} else if (pause) {
console.log("Loop paused at: " + iteration);
pause_iteration = iteration;
} else {
var M = Math.sqrt(Math.random());
setTimeout(function () {
recursiveLoop((iteration + 1), maximum)
}, 100);
}
}
recursiveLoop(0, 10000);
// set pause = true at a later point
pause = true;
关于javascript - 可暂停的 Javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39898773/