我正在尝试从AWS上保存的nodejs文件中的twitter api加载GET请求的结果。目前代码运行一次,console.log是在终端中加载文件时的feed,但是当我使用setTimeout尝试刷新结果时,我得到.length undefined。
目前我的代码看起来像这样......
var Twit = require('twit');
var config = require('./config.js');
var T = new Twit(config);
var params = {
exclude_replies: true,
count: 20,
include_entities: false
};
T.get('statuses/home_timeline', params, gotData);
function gotData(err, data, response) {
var timeLine = data;
for (var i = 0; i < timeLine.length; i++) {
var obj = timeLine[i];
console.log(obj.user.name);
};
};
setTimeout(gotData, 10000);
我已经回顾了与setInterval和.length问题相关的其他问题,但我一直无法找到能够应用于此问题的任何内容
感谢您提供任何帮助
答案 0 :(得分:3)
setTimeout(gotData, 10000);
调用 gotData ,不带任何参数,T.get('statuses/home_timeline', params, gotData);
调用它传递检索到的数据。
尝试以下
setTimeout(function() {
T.get('statuses/home_timeline', params, gotData);
}, 10000);
答案 1 :(得分:0)
除非在未传递响应数据的情况下调用GET
函数,否则必须在超时后再次调用gotdata
请求。尝试这样的事情。
setTimeout(function(){
T.get('statuses/home_timeline', params, gotData);
}, 10000);
答案 2 :(得分:0)
您的goData()
函数需要三个参数:
function gotData(err, data, response)
但是你在T.get('statuses/home_timeline', params, gotData)
和setTimeout(gotData, 10000)
中没有任何参数就是这样说的,这就是为什么你会得到这个例外,因为data
是undefined
:< / p>