2016-07-05 56 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