我试图从方法中返回一个值。我在方法中有一个嵌套函数,它应该返回一个值。
但是,在调用traverseProjects()
时,我无法让它返回title的值。
这是我的代码。
getTitle: function(userId, projectId) {
u = new Firebase('<firebase.com>/users/' + userId + /projects/ + projectId);
function traverseProjects() {
u.once('value', function(snapshot) {
if (snapshot.key() === projectId) {
var obj = snapshot.val();
var title = obj.details.title;
}
console.log(title);
return title;
});
}
var title = traverseProjects();
console.log(title);
return title;
}
答案 0 :(得分:1)
做这样的事情:
getTitle: function(userId, projectId, callback) {
u = new Firebase('<firebase.com>/users/' + userId + /projects/ + projectId);
function traverseProjects(callack) {
u.once('value', function(snapshot) {
if (snapshot.key() === projectId) {
var obj = snapshot.val();
var title = obj.details.title;
}
console.log(title);
callback(title);
});
}
traverseProjects(function(title) {
console.log(title);
callback(title);
});
}
用以下方法调用该函数:
getTitle('uid', 'pid', function(title){
console.log(title);
})
像@ felix-kling建议的那样,我们可以简单地消除内部功能:
getTitle: function(userId, projectId, callback) {
u = new Firebase('<firebase.com>/users/' + userId + /projects/ + projectId);
u.once('value', function(snapshot) {
if (snapshot.key() === projectId) {
var obj = snapshot.val();
var title = obj.details.title;
}
console.log(title);
callback(title);
});
}