Firebase开启/一次同步

时间:2018-02-10 10:58:29

标签: javascript firebase firebase-realtime-database

我想用" .on"来调用Firebase数据库。函数并在循环中再次调用它,例如:

var promise = new Promise((resolve, reject) => {
  that.fireRef.child("users/"+uid+"/discussions").on('child_added', function (snapshot) {
    var groupKey = snapshot.key;
    console.log('OrdreUn');
    that.discussionsUsers.child(groupKey).on('child_added', function (snapshot) {
      user=snapshot.key;
      console.log('OrdreDeux');
      if(user==firebase.auth().currentUser.uid)
      {
        user=true;
        resolve(groupKey);
      }
    });
    console.log('ForderUn');
  });
  console.log('ForderDeux');
});

问题是我的console.log函数会告诉我执行是完全异步的,我不知道为什么但如果我使用.once函数而不是.on函数执行同步,问题是如果我使用.once function我无法访问snapshot.key。

我想找到解决这个问题的正确方法。

1 个答案:

答案 0 :(得分:0)

你可以使用.then,因为firebase本身会返回promise,你可以使用它来对firebase进行下一次调用以同步数据并根据groupkey得到结果

var promise = new Promise((resolve, reject) => {
  that.fireRef.child("users/"+uid+"/discussions").on('child_added').then(snapshot => {
    var groupKey = snapshot.key;
    that.discussionsUsers.child(groupKey).on('child_added', function (snapshot) {
      user=snapshot.key;
      console.log('OrdreDeux');
      if(user==firebase.auth().currentUser.uid)
      {
        user=true;
        resolve(groupKey);
      }
    });
  })
});