0

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 变量。

4

1 回答 1

0

JavaScript 变量确实是函数范围的,因此var _user在后续运行中不定义新变量不会有任何解释。

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

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

于 2012-05-09T13:11:44.120 回答