Javascript Firebase:If语句中的Push项

Javascript Firebase:If语句中的Push项,javascript,firebase,Javascript,Firebase,我试图找出为什么这个函数没有将我的项作为对象推送到if语句中的availableProviders数组中 serviceProviders.on('value', function(snapshot) { var availableProviders = []; snapshot.forEach(function(childSnapshot) { var key = childSnapshot.key(); providers.on('value', function

我试图找出为什么这个函数没有将我的项作为对象推送到if语句中的availableProviders数组中

serviceProviders.on('value', function(snapshot) {
  var availableProviders = [];

  snapshot.forEach(function(childSnapshot) {
    var key = childSnapshot.key();

    providers.on('value', function(snap) {
      if (snap.hasChild(key)) {
        var item = snap.child(key);
        availableProviders.push(item);
      }
    });
  });

  console.log(availableProviders);
});
出于某种原因,我的console.log最后只返回一个空数组


没有推送我的物品的任何原因。感谢您的帮助。提前谢谢

providers是异步的,console.log是sync?…我猜@FrankvanPuffelen可能是重复的,在这种情况下,我是否应该远离$loaded?有没有其他方法来回报承诺?angularjs与Firebase配合得很好,并且有@FPcond的承诺,所以让我正确地说,console.logavailProviders运行得更早,因为它仍在等待我的providers.on加载?