我在node.js中有这个代码,我正在使用Twit:
var output = "Output: "
client.get('search/tweets', {q: "apple", count:5},
function(err, data, response){
for (var index in data.statuses) {
var tweet= data.statuses[index];
console.log('@' + tweet.user.screen_name + ': ' + tweet.text+'\n');
output += '@' + tweet.user.screen_name + ': ' + tweet.text+'\n'
}
})
console.log(output);
这五条推文很好地打印到控制台但没有添加到输出中,所有从console.log(output);
打印的都是Output:
。此外,此行在推文之前打印,因此client.get
函数必须与脚本的其余部分并行运行;我怎么能强迫它不这样做?
答案 0 :(得分:0)
您要定义的功能:
function(err, data, response){
for (var index in data.statuses) {
var tweet= data.statuses[index];
console.log('@' + tweet.user.screen_name + ': ' + tweet.text+'\n');
output += '@' + tweet.user.screen_name + ': ' + tweet.text+'\n'
}
})
称为回调。在get
函数从服务器检索数据后,运行该回调函数。如果将console.log(output);
移动到函数内部,就在for循环的正下方,它应该打印出您期望的内容。此外,你不能真正强迫它不平行,或者你不应该。服务器调用最好是异步完成的。只需通过调用回调中的另一个函数(如handleData)来执行数据所需操作,如下所示:
function(err, data, response){
for (var index in data.statuses) {
var tweet= data.statuses[index];
console.log('@' + tweet.user.screen_name + ': ' + tweet.text+'\n');
output += '@' + tweet.user.screen_name + ': ' + tweet.text+'\n'
}
handleData(data);
})