簡體   English   中英

異步JavaScript靜態函數變量

[英]asynchronous JavaScript static function variable

我在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變量的確是函數作用域的,因此不會對var _user在后續運行中未定義新變量的任何解釋。

查看代碼,我會更懷疑您的User構造函數中發生的事情-也許它包含某些范圍界定或其他邏輯問題,導致在后續調用中創建相同的用戶。 類似的“懷疑”將是傳入的data參數,以及db.createNode() 僅建議這些方面,因為更有可能出現程序問題,而不是JavaScript不遵守規則:)

另外,我注意到您的User.create函數接受一個名為_callback的參數,但稍后將調用callback 我不知道這是您的示例中的錯字,還是不小心從示例中未顯示的更高范圍調用回調,但這可能會產生奇怪的行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM