Я создал http-сервер в node.js, и я хочу, чтобы функция запускалась через определенное время каждый раз, когда есть запрос. Я попытался использовать setTimeout() для этого. Но проблема в том, что я хочу, чтобы несколько таймеров выполнялись одновременно, а setTimeout сбрасывается каждый раз, когда выполняется новый запрос. Может ли кто-нибудь помочь мне в том, как это сделать?Как использовать setTimeout более одного раза одновременно в nodejs
Вот код, который я пробовал:
http.createServer(getVersion).listen(process.env.PORT, process.env.IP);
function getVersion(req, res) {
if (url.parse(req.url).pathname === "/") {
timeout = setTimeout(function() {
Downloadurls.find({ Downloadurl : randstring }).exec(function (err,result) {
if (err) { console.log(err) }
if (!result.length) {
Downloadurl_doc = new Downloadurls({
Downloadurl: randstring
});
Downloadurl_doc.save();
}
});
}, timeoutSeconds*1000);
interval = setInterval(function() {
console.log('Time left: '+getTimeLeft(timeout)+'s');
if (getTimeLeft(timeout) === 0)
{ clearInterval(interval);}
}, 1000);
function getTimeLeft(randstring1[i]) {
return Math.ceil((timeout._idleStart + timeout._idleTimeout - Date.now())/1000);
}
}
}
Непонятно, что вы пытаетесь сделать. 'setTimeout()' ничего не сбрасывает, когда вызывается более одного раза. Он создает новое событие таймера для каждого его вызова. Возможно, у вас есть проблема, потому что вы снова и снова используете одну и ту же переменную timeout. – jfriend00
Да, это была ошибка, которую я сделал. объявила тайм-аут глобальной переменной. спасибо за просвещение –