我有2个文件
//init.js
var x = getMasterList(location);
console.log(x);
console.log("should have printed list");
和
//read.js
function getMasterList(location) {
var list = [];
ref.child(company).child("listOfLocations").once("value").then(function(snapshot) {
snapshot.forEach(function(childSnapshot) {
var item = childSnapshot.val();
list.push(item);
})
});
console.log("In function");
return list;
}
控制台的输出是
undefined
should have printed list
In function
问题是,由于javascript的异步性质,它在分配之前打印出'x'。我看过承诺,似乎它不能帮助我,因为它没有改变异步行为。我也看过回调,但我似乎无法让它们适用于多个文件。
任何解决这个问题的方法,只有在'x'之后打印才有值?
答案 0 :(得分:0)
使用callbacks,您可以轻松实现这一目标。
<强> read.js 强>
function getMasterList(location, callback) {
var list = [];
//do stuff
console.log("In function");
callback(list);
}
<强> init.js 强>
var x = getMasterList(location, function(x){
console.log(x);
console.log("should have printed list");
});