我有一个调用函数来获取值的哈希。问题是,函数返回的是函数内部而不是它应该返回的值。
(用户在此哈希上方定义)
我的哈希:
userInfo = {
id: user.id,
email: user.email,
cars: getCars(user.id),
}
调用此函数:
getCars = (userId) ->
id = parseInt(userId)
userRef = new Firebase("https://demo-firebase.firebaseIO.com/users/#{id}/")
userRef.on('value', (snapshot) ->
if snapshot.val() == null
["toyota"]
else
snapshot.val().cars # returns an array of cars
)
当我在调试器中并单步执行该函数时,它返回userRef.on
行而不是if/else
语句中的正确位置。
这是编译好的JS:
getCars = function(userId) {
var id, userRef;
id = parseInt(userId);
userRef = new Firebase("https://demo-firebase.firebaseIO.com/users/" + id + "/");
return userRef.on('value', function(snapshot) {
if (snapshot.val() === null) {
return ["toyota"];
} else {
return snapshot.val().cars;
}
});
};
任何想法为什么会发生这种情况?我确定这是我忽略的简单事情。