0

我有这个例子:

var myApp = (function() {

    var inputClick = function() {
        console.log('inputClick');
    };

    var loadRecentTimeout = function()
    {
    window.setTimeout("inputClick()",3000);
    };

    return {
      loadRecentTimeout:loadRecentTimeout,
      inputClick:inputClick
    };


})();

myApp.loadRecentTimeout(); // this returns inputClick() undefined

window.setTimeout("myApp.inputClick();",3000); // this one seems to work , but it calls that method only one time and not every 3 seconds

谁能解释我如何让这段代码inputClick()每 3 秒调用一次该方法?

谢谢

4

2 回答 2

4

你想调用 setInterval 而不是 setTimeout

var eventInterval = window.setInterval(function () { 
                        myApp.inputClick(); 
                    },3000);

您还应该将函数作为函数而不是字符串传递。

如果您需要取消重复活动,您可以致电clearInterval

clearInterval(eventInterval)
于 2012-08-20T18:51:24.003 回答
1

当您使用字符串“functionName()”时,它会在窗口范围内对其进行评估。相反,只需使用名称即可分配对函数的引用。setTimeout 只触发一次,您想使用 setInterval。

var myApp = (function() {

    var inputClick = function() {
        console.log('inputClick');
    };

    var loadRecentTimeout = function()
    {
        window.setInterval(inputClick,3000); 
    };

    return {
      loadRecentTimeout:loadRecentTimeout,
      inputClick:inputClick
    };


})();
于 2012-08-20T18:58:07.910 回答