2016-07-05 52 views
0

在stackoverflow上有一些相同的问题,如timer._repeat is not a function?Run set Interval again for every interval ID in array,但我无法解决我的问题,所以我想问我的特殊解决方案。TypeError:timer._repeat不是函数吗?

我使用setInterval函数从数据库中重复查询,每个30s然后显示实时anlytics应用程序的视图。当exports.index叫我将实现从表中选择由getUserRegisterPerday功能与requestresponse引用reqres agrument,结果将提上rows agrument从回调函数来渲染查看。

var $fromTime, 
    $toTime; 

function getDateTime() { 

    var dt = dateTime.create(); 
    $toTime = dt.format('Y-m-d'); 
    console.log($toTime); 

    dt.offsetInDays(1); // + 1 day 

    $fromTime = dt.format('Y-m-d'); 
    console.log($fromTime); 

}; 

function repeatQueryRegister(req, res) { 

    getDateTime(); 

    var model = new reportModel(); 
    // select from table on database 
    model.getUserRegisterPerday($fromTime, $toTime, function (rows) { 
     res.render('index', {title: 'index', data: rows}); 
    }); 
}; 

exports.index = function (req, res) { 

    var nInterval = setInterval(repeatQueryRegister(req, res), 30000); 

}; 

但它抛出一个错误(图仍显示成功)

timers.js:275 timer._repeat();

TypeError: timer._repeat is not a function at wrapper [as _onTimeout] (timers.js:275:11) at Timer.listOnTimeout (timers.js:92:15)

如何解决呢?

+1

此错误与您的代码似乎无关。这个错误发生在'timers.js'中,它与内建的'setInterval()'命令无关。 – Soviut

+0

@Soviut:什么是timers.js用于? – Loint

+0

你是否在任何时候调用'clearInteval(nInterval)'? – Soviut

回答

2

好了,这是死的,但如果别人来用:

尝试改变

var nInterval = setInterval(repeatQueryRegister(req, res), 30000); 

var nInterval = setInterval(function() { 
    repeatQueryRegister(req, res) 
}, 30000); 

这样你传递一个函数指针,而不是已处理的返回值。

+1

原来,setInterval只接受没有输入的函数,谢谢@ 6656342 – sfiore