如何将window.setTimeout与javascript和模块模式一起使用

how to use window.setTimeout with javascript and the module pattern

本文关键字:模式 模块 一起 javascript window setTimeout      更新时间:2023-09-26

我有这个例子:

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

有人能解释一下我如何让这个代码每3秒调用一次inputClick()方法吗?

感谢

您想调用setInterval而不是setTimeout

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

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

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

clearInterval(eventInterval)

当您使用字符串"functionName()"时,它会在窗口范围内对其进行求值。相反,只需使用名称即可为函数指定引用。如果要使用setInterval,则setTimeout只触发一次。

var myApp = (function() {
    var inputClick = function() {
        console.log('inputClick');
    };
    var loadRecentTimeout = function()
    {
        window.setInterval(inputClick,3000); 
    };
    return {
      loadRecentTimeout:loadRecentTimeout,
      inputClick:inputClick
    };

})();