如何使一行等待函数返回

时间:2018-02-22 17:52:59

标签: javascript

我有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'之后打印才有值?

1 个答案:

答案 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");
});