从node.js + twit package

时间:2017-11-13 14:07:38

标签: javascript node.js asynchronous twitter

我正在使用twit个软件包,通过node.js应用程序从Twitter获取一些JSON数据。

我试了几个小时来管理如何将变量从函数内部移交给外部。

var tweets;
T.get('followers/ids', { screen_name: 'tolga_tezel' },  function (err, data, response) {
  tweets = data;
})
console.log(tweets); // -> undefiend

//data is the JSON I get from the Twitter Server. Console.log(data) shows it.

我知道它是因为异步的东西,但我不知道如何管理它。

我希望你能帮助我

3 个答案:

答案 0 :(得分:0)

将您的console.log放入回调函数中。 如果您想进一步处理,请将该代码放入回调函数中。 还有其他方法可以使用javascript的异步性质。 您可以使用非常容易使用的async.js库。

答案 1 :(得分:0)

解决问题的最简单方法可能是使用Promise和Twit的承诺包(https://www.npmjs.com/package/promised-twit

在你的代码中,它看起来像这样:

var Twit = require('promised-twit');

var T = new Twit({
  consumer_key: '...',
  consumer_secret: '...',
  access_token: '...',
  access_token_secret: '...'
})

T.getFollowersIds({ screen_name: 'tolga_tezel' })
  .then(function(data) {
    console.log(data);
  });
})

当然首先运行npm install --save promised-twit

来安装软件包

当你的当前代码在你注销时没有返回任何内容的原因是因为console.log在twitter API从T.get()返回任何响应之前运行

答案 2 :(得分:0)

我遇到了同样的问题。 对我有用的是(也许任何人都在寻找这个):

var tweets = T.get('followers/ids', { screen_name: 'tolga_tezel' })

调用 , function. (x,z) 会以某种方式吞下数据 - 知道那里真正发生了什么。

但是,如果要调用错误处理程序或其他函数 改用 .catch().then() 例如

T.get('followers/ids', { screen_name: 'tolga_tezel' }).then((response) => console.log(response.data)