嘿傢伙我在node + express上運行一個web服務器,由於某種原因,我的代碼並沒有每10分鐘執行一次,即使我清楚地在那裏設置了setInterval函數。這只是我在我的腳本文件(名爲serverScripts.js)中設置的4個代碼之一,緊挨着app.js,我用節點serverScripts.js運行它並永遠使用模塊,但它仍然不起作用如何讓代碼每15分鐘連續執行一次?
var APOD = (function() {
setInterval(function() {
async.waterfall([
function Request(callback) {
let apodUrl = 'https://api.nasa.gov/planetary/apod?api_key=';
let api_key = '*censored*';
request(apodUrl+api_key, function(err, apodData) {
if (err) throw err;
apodData = JSON.parse(apodData.body);
callback(null, apodData);
});
},
function GetTableItems(apodData, callback) {
let apodParams = { TableName: "APOD" }
db.scan(apodParams, (err,apodTable) => {
if (err) throw err;
callback(null, apodData, apodTable);
});
},
function CheckUniques(apodData, apodTable, callback) {
let tempArr = [];
for (let i = 0; i < apodTable.Items.length; i++) {
tempArr.push(apodTable.Items[i].title);
}
let IsItThere = _.includes(tempArr, apodData.title);
if (!IsItThere) {
setTimeout(function() {
let putParams = {
TableName: 'APOD',
Item: {
"title": apodData.title,
"date": apodData.date,
"description": apodData.explanation,
"hdurl": apodData.hdurl,
"media_type": apodData.media_type,
"url": apodData.url,
"copyright": apodData.copyright
}
}
db.put(putParams, (err) => {
if (err) throw err;
console.log(`\nAdded APOD item: ---"${apodData.title}"--- to the database.\n`);
});
},1000);
}
else { console.log("No new APOD items."); }
callback(null);
}
]);
APOD;
},600000);
}());
該問題可能與'setInterval'不同,但可能是因爲代碼中的某些失敗。請檢查控制檯 – brk
如果需要,您可以設置一些CRON作業以實現您的目的。 你可以使用https://www.npmjs.com/package/node-cron –
「仍然不起作用」是什麼意思?這不足以說明您的問題,以及您已採取的故障排除步驟以及您在這些步驟中學到的內容。一個'setInterval()'不僅僅是停止。代碼中必須存在某種可觀察或可測試的錯誤。你是否在你的代碼的每一步設置了斷點?你是否在整個代碼中放置了'console.log()'語句來跟蹤它的進度,並查看事情發生的地方。這裏需要進行元素調試步驟。 – jfriend00