2013-03-22 129 views
1

如何范围datat? 这里datat是空的。 我想将数据放入一个var,所以我可以在函数外部使用它。函数内nodejs中的变量范围

var datat; 
twit.search('#louieck', {include_entities:true,page:paget,maxid:maxidt}, function(data) { 

// and output to the console: 

datat = data; 

}); 
sys.puts(sys.inspect(datat)); 

问候

BUSSIERE

+0

当你调用'sys.puts'时,回调函数还没有被调用,所以'datat' 是空的。欢迎来到异步的世界:) – robertklep 2013-03-22 12:29:11

回答

2

'datat' 是你的函数外作用域。 twit.search是异步的,因此在使用sys.inspect检查'datat'之前可能不会返回'数据'。

这应该让你看到datat:

var datat; 
twit.search('#louieck', {include_entities:true,page:paget,maxid:maxidt}, function(data) { 

    // and output to the console: 
    datat = data; 
    sys.puts(sys.inspect(datat)); 

}); 

但是最好你会使用这样的回调...

var datat; 
var callback = function(d){ 
    sys.puts(sys.inspect(d)); 

    datat = d; 
    // do something more with datat 

}; 

twit.search('#louieck', {include_entities:true,page:paget,maxid:maxidt}, function(data) { 

    callback(data); 

}); 

编辑 - 简化为每个评论...

var datat; 
var callback = function(d){ 
    sys.puts(sys.inspect(d)); 
    datat = d; 
    // do something more with datat 
}; 
twit.search('#louieck', {include_entities:true,page:paget,maxid:maxidt},callback(data)); 
+2

在第二个例子中,你不需要匿名函数。只需传递'callback'即可。 – 2013-03-22 13:23:10

+0

好主意,谢谢 - 我添加了一个编辑。 – ZimSystem 2013-03-22 14:27:46