在将数据写入Firestore时显示加载指示器

时间:2018-11-20 14:02:40

标签: reactjs firebase google-cloud-firestore

我对这个事实有疑问,我似乎无法弄清楚在更新Firestore时如何显示加载程序。

我提供了以下示例,但不要介意我在示例中使用的东西。关键是,在所有创建或更新完全完成之前,我似乎无法弄清楚如何显示加载指示器。

如果我尝试在Firestore调用之前和之后设置状态,则微调器将仅在1秒内出现,因为实际的调用在更新Firestore时在后台运行(我认为是异步的)。

有人可以帮我吗?

先谢谢了。

array.forEach(itemInArray => {
db.where(test, '==', itemInArray.test )get()
  .then((result) => {
    // try to update doc first
    db.doc(result.docs[0].id).update({
      test: 'test'
    });
  })
  // update successfull
  .then(() => console.log('Document exists! We have updated the current one'))
  // If the update failed, we create new doc
  .catch((err) => {
    console.log('Created document);
    db.doc().set({
      test: 'test'
    });
  });

});

1 个答案:

答案 0 :(得分:1)

正如我们在聊天中讨论的那样,如果您的数据库操作需要顺序执行,则可以执行以下操作:

public MainWindow()
{
    InitializeComponent();
    ps = new ProxyService();
    ps.AcceptConnection();
    DataContext = new BaseViewModel { MessageViewModel = ps };
}

如果某些操作可以并行进行,则需要考虑使用showSpinner(); updateFirstThing() .then(() => updateSecondThing()) .then(() => updateThirdThing()) .catch(err => handlerError(err)) .finally(() => hideSpinner()); 以确保在所有的诺言都兑现(或有错误)时隐藏微调框。