3

我试图在五分钟后触发一个事件。我正在使用以下代码:

setTimeout(tweet(name, type), 5 * 60 * 1000);

过了一会儿就开始了,但不到五分钟(通常是两分钟左右,但有时是瞬间的。)我究竟做错了什么?(我也尝试将时间设置为300000,同样的问题。

4

2 回答 2

17

您正在tweet立即调用并将其返回值传递给setTimeout.

您需要将函数传递给setTimeout. 您没有包含 的代码tweet,但我假设它不是return函数。

setTimeout(function () { tweet(name, type); }, 5 * 60 * 1000);
于 2012-06-08T14:14:23.467 回答
2

Quentin 的解决方案有效,但您也可以使用这种形式:

setTimeout(tweet(name, type), 5 * 60 * 1000);

function tweet(name, type) {
    return function(name, type) {
    };
}

当您想在闭包中保留一些值时,它有一些用例。

于 2012-12-09T07:18:56.713 回答