代码之家  ›  专栏  ›  技术社区  ›  amc software

Firestore:引用类型。如何等待evey result的all get()调用

  •  0
  • amc software  · 技术社区  · 7 年前

    当我订阅结果时,我使用:

     getTickets()
    .subscribe(listOfTickets=> {  
    
         //loop the array
         listOfTickets.forEach(ticket => {
    
             ticket.personRef.get()  //this is the reference type field
             .then(res => { //getting information
                let person = res.data();
           }
         }         
         .... 
     }    
    

    我如何才能在以下位置等待所有结果:

    ticket.personRef.get()
    

    我正在尝试使用forkJoin,但我仍然不明白如何应用于此。可观察的列表有很多结果。

    2 回复  |  直到 7 年前
        1
  •  0
  •   Philip    7 年前

    forEach . 使用 for

      async someFunction() {
        getTickets().subscribe(async listOfTickets => {
          const allTickets = [];
            for (let i = 0; i < listOfTickets.length; i++) {
              await listOfTickets [i].personRef.get().then(snapshot => {
                return snapshot.data();
              }).then(ticket => {
                allTickets.push(ticket);
              })
            }
          console.log(allTickets);
        })
      }
    
        2
  •  0
  •   amc software    7 年前

    谢谢,您的帮助为我指明了解决问题的正确方向,只是做了一些小改动,这是最后的代码:

    async someFunction() {
      getTickets()
      .subscribe(async listOfTickets => {
        const allTickets = [];
        var ticket = null;
        for (let i = 0; i < listOfTickets.length; i++) {
    
          await listOfTickets[i].personRef.get().then(snapshot => {
            ticket = snapshot.data();
          })
    
          allTickets.push(ticket);
        }
    }