【问题标题】:scope of variable in nodejs inside a function函数内nodejs中的变量范围
【发布时间】:2013-03-12 07:08:52
【问题描述】:

如何定义数据范围? 这里 datat 是空的。 我想把数据放在一个 var 中,这样我就可以在函数之外使用它。

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));

问候

布西耶

【问题讨论】:

  • 调用sys.puts的时候,回调函数还没有被调用,所以datat是空的。欢迎来到异步世界:)

标签: node.js variables scope


【解决方案1】:

'datat' 的范围在您的函数之外。 twit.search 是异步的,因此在您使用 sys.inspect 检查“datat”之前可能不会返回“data”。

这应该让你看到数据:

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));

【讨论】:

  • 在第二个示例中,您不需要匿名函数。只需通过callback
猜你喜欢
  • 1970-01-01
  • 2012-06-06
  • 2020-07-22
  • 1970-01-01
  • 2012-10-04
  • 2016-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多