我有一个Javascript函数,它调用自身以刷新通知栏。我的功能就像:
function refreshLoop() {
refresh();
setTimeout("refreshLoop();", 10000);
}
我的问题是,如果我使用这样的功能,那么会有任何危害 - 编程错误 - 。我问这个问题,因为你看到refreshLoop()函数永远不会结束。
我应该像这样使用它还是有其他想法?
由于
答案 0 :(得分:3)
这个结构经常而且很好(特别是如果setTimeout
的条件调用使得setInterval
很难使用),但它并不像你那样编写。当你可以直接传递函数时,不要评估代码。使用此:
function refreshLoop() {
refresh();
setTimeout(refreshLoop, 10000);
}
答案 1 :(得分:0)
您可以通过删除超时来结束超时循环:
var timeout;
function refreshLoop() {
refresh();
timeout = setTimeout(refreshLoop, 1000);
}
refreshLoop()
// later on
clearTimeout(timeout)
答案 2 :(得分:-1)
我没有看到任何问题,但你可能会丢失eval“refreshLoop();”
function refreshLoop() {
refresh();
setTimeout(refreshLoop, 10000);
}