代码之家  ›  专栏  ›  技术社区  ›  Ciprian

在Promise链中传递数组

  •  0
  • Ciprian  · 技术社区  · 8 年前

    我正在给所有被邀请参加活动的客人发送通知。

    以下代码适用于 console.log(guestPlayerIds); 谁会回来? undefined guestPlayerIds ?

    exports.sendNewEventFcm = functions.database.ref('/fcm/{pushID}').onWrite(event => {
    
      const eventID = event.params.pushID;
      const dsnap = event.data.val();
    
      // Exit when the data is deleted.
      if (!event.data.exists()) {
        return;
      }
    
      let guests = Object.keys(dsnap);
    
      const promises = guests.map((data) => admin.database().ref('playerIds').child(data).once('value'));
    
      return Promise.all(promises).then(data => {
    
        let guestPlayerIds = [];
    
        let returns = data.map(item => {
          let itemVal = Object.keys(item.val())[0];
          console.log(Object.keys(item.val())[0])
          guestPlayerIds.push(itemVal);
    
        });
      }).then(guestPlayerIds => {
        console.log(guestPlayerIds);
      })
    
    });
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   trincot    8 年前

    使用 map 很好,但是您应该在回调中返回一些内容,然后还应该返回 地图 :

    return data.map(item => {
      let itemVal = Object.keys(item.val())[0];
      console.log(Object.keys(item.val())[0])
      return itemVal;
    });
    

    实际上不需要数组变量 guestPlayerIds 在那一点上。仅在随后 then 你可以像以前那样使用它。

    推荐文章