2013-10-03 52 views
1

所以我使用https://npmjs.org/package/node-schedule來調度一些任務,對node.js有點新,我不明白爲什麼在定義一個函數和調用時創建一個函數'in line'它沒有正確安排,它只是立即運行,然後退出。node.js中的節點調度回調函數

job = schedule.scheduleJob({}, function(){console.log('one minute')}); 

作品,但

function test(){ 
    console.log('one minute') 
} 
job = schedule.scheduleJob({}, test); 

閃光一次,然後退出。

回答

1

function(){.....}創建一個指向匿名函數的指針,該函數在排定的超時到期時進行評估。直接調用會被立即評估,因爲它不是一個函數指針;本質上,程序試圖評估它,以防函數返回一個它可以存儲和訪問的指針(返回函數(){.....})。你想要的行爲,可以通過設置回調模擬到

function(){test()} 

或改變測試的身體:

return function(){console.log('one minute')}; 

您可以通過使用setInterval和setTimeout的模擬在瀏覽器窗口此行爲方法;它們是節點調度在內部用於調度任務的內容。