Joã*_*imo 9 javascript setinterval node.js express
在NodeJS之上设置的ExpressJS中,我有一些像这样的代码:
app.get('/keys/readresults/:keyname', basic_auth, function(req,res){
res.writeHead(200, {'content-type': 'text/json'});
setInterval(
go_to_database_and_get('stuff', function (database_replies) {
res.write(database_replies)
})
,5000);
});
Run Code Online (Sandbox Code Playgroud)
代码是为了简单而编写的(如果有人想要真正的代码我很乐意将它发布在一些pastebin中).
当我正是我想要发生的事情时会发生什么:我得到一个200状态标题,它检查数据库是否有我想要的结果并将响应写回给我,然后等待5秒并在数据库中搜索新结果并写入再次响应,等等每隔5秒钟.curl -u username:password http://localhost:4000/keys/readresults/key
问题是,当我退出curl时,循环会一直持续下去.如果请求结束,我如何告诉express或nodejs应该结束该循环(我猜是否使用clearInterval)?
这么简单
app.get('/keys/readresults/:keyname', basic_auth, function(req,res){
res.writeHead(200, {'content-type': 'text/json'});
var no = setInterval(
go_to_database_and_get('stuff', function (database_replies) {
res.write(database_replies)
});
,5000);
req.on("close", function() {
clearInterval(no);
});
});
Run Code Online (Sandbox Code Playgroud)