我对NodeJS相当陌生,我想知道如何让我的节点服务器不断更新网页。
因此,我正在做的是从Twitter上获取推文,而现在我只想将它们全部显示在基本网页上。在第一次运行时,它看起来像这样:
名称:ap。文字:RT @APCentralRegion:俄罗斯诗人叶夫根尼·叶夫图申科
专注于战争暴行的人死于俄克拉荷马州
名称:ap。文字:一周后
数百人参加了俄罗斯的反政府抗议活动,警察被捕
数十次未经授权的集会。
...
但是,在大约一分钟的时间间隔后,我收到以下错误消息:
response.write("*********End of One Interval*********")
^
TypeError: Cannot read property 'write' of undefined
我的代码在下面,请记住,当我在createServer中具有tweet函数时,它仍然显示出与无法正确更新页面相同的行为,但是,总是使用console.log正确地更新了终端窗口
// Dependencies =========================
var
twit = require('twit'),
config = require('./config');
var http = require("http");
var url = require("url");
var Twitter = new twit(config);
// FAVORITE BOT====================
// Heavily modified from original tutorial.
var favoriteTweet = function(response, a, b){
var params = {
screen_name: a,
count: b,
// q: '#aprilfools, #aprilfoolsday', // REQUIRED
// result_type: 'recent', //recent tweets only.
//lang: 'en'
}
//console.log("Params: " + params.q);
// find the tweet
Twitter.get('statuses/user_timeline', params, function(err,data){
// find tweets
//console.log(data);
var tweet = data; //.statuses for actual tweets.
//console.log(tweet);
for(var result in tweet) {
response.write("Name: " + a + ". Text: " + tweet[result].text + "\n");
console.log("Resulting text: " + tweet[result].text);
console.log("Created At: " + tweet[result].created_at);
}
//console.log(tweet);
response.write("*********End of One Interval*********")
console.log("*********End of One Interval*********")
});
}
http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type":"text/plain"});
var params = url.parse(request.url, true).query;
var a = params.name;
var b = parseInt(params.count);
// grab & 'favorite' as soon as program is running...
favoriteTweet(response, a, b);
// 'favorite' a tweet in every 1 minute
setInterval(favoriteTweet, 60000);
}).listen(9090);
最佳答案
您必须将参数传递给回调。请执行下列操作:
setInterval(function(){
favoriteTweet(response,a,b)
}, 60000);
关于javascript - 如何使用NodeJS持续更新网页?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43170932/