如何在方法调用中返回此变量?

时间:2014-02-19 23:17:34

标签: javascript

这是一个简单的问题,但我很难过。

我有方法:

    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的任何提示,超出其范围?

谢谢!

1 个答案:

答案 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);
}