我需要让一段代码始终独立于其他代码运行.有没有办法在javascript中创建一个线程来运行这个功能?
– 为什么setTimeout对我不起作用
我尝试过,但它只运行一次.如果我以递归方式调用该函数,它会在一段时间后抛出“过多的递归”错误.我需要每100毫秒运行一次(这是与嵌入式系统的通信).
– 如你所知,这里有一些代码
function update(v2) {
// I removed the use of v2 here for simplicity
dump("update\n"); // this will just print the string
setTimeout(new function() { update(v2); },100); // this try doesn't work
}
update(this.v);
它抛出“过多的递归”.
最佳答案
摆脱你传递给
setTimeout()
的函数的新关键字,它应该工作.
function update(v2) {
try {
dump("update\n");
} catch(err) {
dump("Fail to update " + err + "\n");
}
setTimeout(function() { update(v2); },100);
}
update(this.v);
或者只使用setInterval()
.
function update(v2) {
try {
dump("update\n");
} catch(err) {
dump("Fail to update " + err + "\n");
}
}
var this_v = this.v;
setInterval(function() {update(this_v);},100);
编辑:在变量中引用this.v,因为我不知道你的应用程序的价值是多少.