.length undefined仅在setTimeout之后

时间:2017-09-07 14:24:43

标签: javascript jquery node.js settimeout

我正在尝试从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问题相关的其他问题,但我一直无法找到能够应用于此问题的任何内容

感谢您提供任何帮助

3 个答案:

答案 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)中没有任何参数就是这样说的,这就是为什么你会得到这个例外,因为dataundefined:< / p>