可调试的Javascript函数

时间:2016-10-06 14:32:32

标签: javascript

我在浏览器中训练神经网络。我正在考虑调用一个可以运行一段时间(一夜之间)的函数,并且我希望能够以非致命的方式终止函数执行(所以我不会丢失我的数据)一旦我开心。

我正在寻找一个通用的解决方案,允许任何循环函数从控制台或ui元素以最小的变化终止其当前状态。

我已经看过this question但我的有点不同;它现在是2016年,我们有网络工作者和发布消息,看起来他们会提供解决方案的工具。

1 个答案:

答案 0 :(得分:3)

嗯......如果你使用递归,那么暂停就行了。但遗憾的是我不推荐它,因为call-stack-size将导致迭代错误> 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;