【问题标题】:asynchronous JavaScript static function variable异步 JavaScript 静态函数变量
【发布时间】:2012-05-09 21:11:44
【问题描述】:

我对 javascrip(nodejs 服务器)中的“静态”函数有疑问。

User.create = function(data, _callback){        
    var node = db.createNode(data);
    var _user = new User(node);
    _user.save(function(err){
        if(err) return callback(err, null);
        _user.index(function(err){
            if(err) return callback(err, null);
            callback(null, _user);  
        })
    })
};

如果我两次调用此函数,内部回调函数中的 _user 变量会采用新值,它似乎会覆盖函数 var 而不是分配一个新值。

我需要调用这个函数来分配一个新变量,所以它等待保存和索引函数完成而不改变_user变量。

【问题讨论】:

    标签: javascript node.js asynchronous


    【解决方案1】:

    JavaScript 变量确实是函数作用域,因此对于 var _user 没有在后续运行中定义新变量没有任何解释。

    查看代码,我会更加怀疑您的 User 构造函数中发生的事情 - 也许它包含一些范围界定或其他逻辑问题,导致在后续调用中创建相同的用户。类似的“嫌疑人”将是传入的data 参数以及db.createNode()。只建议这些领域,因为更有可能是程序问题在起作用,而不是 JavaScript 不遵守规则 :)

    另外,我注意到您的User.create 函数接受一个名为_callback 的参数,但后来调用callback。我不知道这是否是您示例中的拼写错误,或者您是否不小心从示例中未显示的更高范围调用回调,但这可能会产生奇怪的行为。

    【讨论】:

      猜你喜欢
      • 2021-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-21
      • 1970-01-01
      • 2018-09-15
      • 1970-01-01
      相关资源
      最近更新 更多