I posted on https://stackoverflow.com/a/56829821/881441 a code snippet for breaking ‘infinite’ running Javascript functions:
function execWithTimeout(gen, timeout = 100) {
const limit = Date.now() + timeout
for (let output of gen()) {
console.log(output)
if (Date.now() > limit) throw(new Error("Timeout reached"))
}
}
function *runInfinite() {
let i = 0
while (1) {
yield i++
}
}
execWithTimeout(runInfinite)