2012-05-09 148 views
0

我在的javascrip(服務器的NodeJS)「靜態」功能的問題。異步JavaScript的靜態函數變量

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採取新的價值,現在看來,這將覆蓋功能變種,而不是分配一個新的。

我需要調用這個函數來分配一個新的變量,所以它會等待保存和索引功能,不改變_user變量來完成。

回答

0

的JavaScript變量確實是功能範圍的,所以不會有對var _user不在隨後的運行中定義一個新的變量任何解釋。

看代碼,我會更加懷疑發生的事情在您的用戶構造的 - 也許它包含了一些作用域或導致在後續調用中創建相同用戶的其他邏輯問題。類似的「嫌疑人」將是data參數獲得通過的,以及db.createNode()。只有這表明這些地區,因爲它更可能是有在玩一個綱領性的問題,而不是JavaScript不遵守規則:)

另外,我注意到,您的User.create函數接受一個名爲_callback參數,但後來被調用callback 。我不知道如果這是你的榜樣錯字,或者如果你不小心調用在示例中未顯示更高範圍的回調,但是這可能會產生怪異的行爲。