返回/从Twit's客户端.get

Returning/getting an output from Twit's client.get

本文关键字:客户端 get Twit 返回      更新时间:2023-09-26

我在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:。此外,这一行打印在tweets之前,因此client.get函数必须与脚本的其余部分并行运行;我怎么能强迫它不这样做呢?

您正在定义的函数:

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);
})