Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用nodejs从twitterapi检索100多条tweet_Javascript_Node.js_Asynchronous_Twitter_Async Await - Fatal编程技术网

Javascript 使用nodejs从twitterapi检索100多条tweet

Javascript 使用nodejs从twitterapi检索100多条tweet,javascript,node.js,asynchronous,twitter,async-await,Javascript,Node.js,Asynchronous,Twitter,Async Await,我正试图在nodejs中从Twitter检索100多条tweet。但是,我一直得到一个空数组。我试着这样做: const MAX_TWEETS = 200; const TWEETS_PER_REQUEST = 100; async function retrieveTweets(T,parameters,tweets_data,request_num){ T.get('search/tweets', parameters, function (error, data){

我正试图在nodejs中从Twitter检索100多条tweet。但是,我一直得到一个空数组。我试着这样做:

const MAX_TWEETS = 200;
const TWEETS_PER_REQUEST = 100;

async function retrieveTweets(T,parameters,tweets_data,request_num){
    T.get('search/tweets', parameters, function (error, data){
        let lowest_id = null;
        let tweets = data.statuses;
        for(var i=0;i<tweets.length; i++){
            tweets_data[request_num*TWEETS_PER_REQUEST+i] = tweets[i].text;
            if(!lowest_id || lowest_id>tweets[i].id){
                lowest_id = tweets[i].id;
            }
        }
        parameters.max_id = lowest_id;
    }); 
}

async function twitter(){
    var config = require('./config.js');
    var Twit = require('twit');
    var T = new Twit(config);

    var parameters = { q: 'obama', count: TWEETS_PER_REQUEST, result_type: 'recent' };
    var tweets_data= new Array(MAX_TWEETS);
    await retrieveTweets(T,parameters,tweets_data,0);
    await retrieveTweets(T,parameters,tweets_data,1);
    console.log(tweets_data);
}

twitter();
const MAX_TWEETS=200;
const TWEETS_PER_REQUEST=100;
异步函数retrieveTweets(T、参数、tweets\u数据、请求\u num){
T.get('search/tweets',参数,函数(错误,数据){
让最低的_id=null;
让tweets=data.status;
对于(var i=0;itweets[i].id){
最低_id=tweets[i].id;
}
}
parameters.max_id=最低_id;
}); 
}
异步函数twitter(){
var config=require('./config.js');
var Twit=需要('Twit');
var T=新Twit(配置);
var参数={q:'obama',count:TWEETS_PER_请求,result_type:'recent'};
var tweets_data=新阵列(最大tweets);
等待检索weets(T,参数,tweets_数据,0);
等待检索weets(T,参数,tweets_数据,1);
console.log(tweets_数据);
}
推特();
我不知道为什么我总是得到一个空数组。任何帮助都将不胜感激


编辑:我确实从get请求中获得结果,但当我尝试将它们保存在
tweets\u data
数组中时,我得到一个空数组,结果不会保存。

您没有正确处理承诺。 get请求可以返回一个承诺,因此不要使用异步,而是将函数更改为

function retrieveTweets(T,parameters){
    return T.get('search/tweets', parameters); 
}
然后在twitter函数中

await retrieveTweets(T,parameters).then(data => {
 // do stuff with result
}.catch(error => {
 // do stuff with the error
}.finally(() => {
 // finish up
}

从访问浏览器中的URL开始,你会收到推文吗?然后添加一些错误处理,看看Twitter到底是什么returns@adeneo我确实从twitterapi获得了结果。当我在get请求中添加console.log(tweets)时,我得到了结果,但在twitter()函数中它显示了一个空数组。你正在将
tweet\u大小
传递给
retrieveTweets
而不是
tweets\u数据
这是你想要的吗?@JDunken noo.。这是一个输入错误。我修好了,谢谢。