这是一个简单的问题,但我很难过。
我有方法:
twitter.get('statuses/home_timeline', {screen_name: 'foo'}, function(err,item) {
console.log(item);
});
我希望能够访问变量item
我试过这个:
var twitterFeed = twitter.get('statuses/home_timeline', {screen_name: 'foo'}, function(err, item) {
return item;
});
console.log("This should be something: ", twitterFeed);
但每次,控制台的输出都是undefined
。
有关如何访问或返回变量item
的任何提示,超出其范围?
谢谢!
答案 0 :(得分:0)
在不了解您正在使用的库的情况下,我将假设它是标准的AJAX调用。然后,twitter.get
返回的时间几乎肯定不会调用您提供给twitter.get
的函数。相反,它会指定它希望该函数最终被称为 ,并且您无法预测何时该函数。因此,在item
返回后,twitter.get
可以立即可靠地完成任务。
此时您有两种选择:
你要用里面的函数做你想做的工作。
E.G。 (正确的方式)
var twitterFeed = twitter.get('statuses/home_timeline', {screen_name: 'foo'}, function(err, item) {
doStuffWithItem(item);
});
或者如果你想在某个命名空间中保留值,你可以
var item;
var twitterFeed = twitter.get('statuses/home_timeline', {screen_name: 'foo'}, function(err, it) {
item = it;
});
然后与var item
在同一范围内的任何内容都可以访问结果。 HOWEVER 你将永远无法假设该值已被放入变量中,因为您无法预测该函数何时被调用。然而,如果,例如,这是一个含糊不清的模式。你想知道twitter.get
或其他什么找到的最后一个结果。您当然可以随时检查item
是否填充了
if(item !== undefined){
doStuffWithItem(item);
}