我正在使用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.
我知道它是因为异步的东西,但我不知道如何管理它。
我希望你能帮助我
答案 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)