为了账号安全,请及时绑定邮箱和手机立即绑定

将辅助数据传递给我的第二个回调函数

将辅助数据传递给我的第二个回调函数

泛舟湖上清波郎朗 2021-11-04 16:27:38
我想在我的第二个回调中使用变量中间数据,但我不知道在我目前的情况下如何将它传递到那里。有人知道怎么做吗?   const unsubscribe = firebase     .locations()     .once('value')     .then(async snapshot => {       const promises = []       const intermediateData = snapshot.val()       snapshot.forEach(element => {         promises.push(firebase.user(element.key).once('value'))       })       return Promise.all(promises)     })     .then(snapshots => {       const userInformation = []       snapshots.forEach(userSnapshot => {         if (userSnapshot.exists()) {           userInformation.push({             userId: 1,             name: userSnapshot.val().username           })         }       })     })   return () => unsubscribe }, [firebase, setSnackbarState, userId]) ```
查看完整描述

2 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

您可以返回一个包含Promise.all结果的对象和intermediateData


const unsubscribe = firebase

  .locations()

  .once('value')

  .then(async snapshot => {

      const promises = []

      const intermediateData = snapshot.val()


      snapshot.forEach(element => {

        promises.push(firebase.user(element.key).once('value'))

      })


      return Promise.all(promises).then(snapshots => ({snapshots, intermediateData})

                                                      // ^^ return object

      })

    .then(({snapshots, intermediateData}) => {

           // ^^^ destructure returned object

      const userInformation = []


      snapshots.forEach(userSnapshot => {

        if (userSnapshot.exists()) {

          userInformation.push({

            userId: 1,

            name: userSnapshot.val().username

          })

        }

      })

    })


查看完整回答
反对 回复 2021-11-04
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

将其放在外封口中:


let intermediateData;

const unsubscribe = firebase

 .locations()

 .once('value')

 .then(async snapshot => {

   const promises = []

   intermediateData = snapshot.val()


   snapshot.forEach(element => {

     promises.push(firebase.user(element.key).once('value'))

   })


   return Promise.all(promises)

 })

 .then(snapshots => {

   //

   // Now you can access intermediateData here

   //

   // ...

 })


查看完整回答
反对 回复 2021-11-04
  • 2 回答
  • 0 关注
  • 143 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信