我在將Firebase調用函數的返回值分配給我的全局變量時遇到了麻煩。這是我的函數:javascript從回調返回(定時)賦值給變量
function getThePushNameById(path , id){
path.once('value', function(data){
if(data.child('id').val() != id){
data.forEach(function(newData){
var base = new Firebase(path.child(newData.name()).toString());
getThePushNameById(base, id);
})
}else{
//finishes the function when path is founded - returns the value
return path.name();
}
})
}
,這是其他文件,其中我提出了要求:
var base = new Firebase(path/to/my/base);
var output = getThePushNameById(base , 2)
console.log(output);
所以我的問題是:console.log
不會等待output
來定義,但它本身運行並記錄undefined
。而我的問題是,如果有人知道我怎麼能讓console.log
等待價值?
爲什麼我的bug報告者報告[Error] TypeError:undefined不是函數(評估'callback(path.name)')如果我將相同的代碼粘貼到我的? – maticzav 2014-09-06 16:10:43
不幸的是,我無法爲你調試你的應用程序。我建議在這一行'callback(path.name());'上設置一個斷點,看看會發生什麼。 – 2014-09-06 16:21:54
我找到了!當函數再次調用它時,它在代碼中是不好的。回調未定義 – maticzav 2014-09-06 18:11:24