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

从包含承诺的对象数组中获取数据

从包含承诺的对象数组中获取数据

红糖糍粑 2022-10-08 18:10:23
在我的反应应用程序中,我有一些用户 ID,需要从不同的端点获取他们的电子邮件和姓名,所以我要做的是:const promises = ids.map(   id => (  {email: axios.get(`blabla/${id}/email`), name: axios.get(`blabla/${id}/name`)}  ));它让我回来了:[{email: Promise, name: Promise},{email: Promise, name: Promise},{email: Promise, name: Promise},...]现在要获取数据,我要做的是:  const results = [];  promises.map(({ email, name}) =>      Promise.all([email, name]).then((result) => {        results.push({          email: result[0].data,          name: result[1].data,        });      })    );但我有一种感觉,这可能不是一个好方法,我的意思是它现在可以工作,但我不想以后再遇到任何问题!哈哈,例如,承诺之间的竞赛,或者例如,为另一个用户设置的用户电子邮件。我不知道它们是否可能发生,但我需要与您的专家核实,如果您确认这种方式或您是否提出其他建议。
查看完整描述

2 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

在我的反应应用程序中,我有一些用户 ID,需要从不同的端点获取他们的电子邮件和姓名,所以我要做的是:


const promises = ids.map(

   id => (  {email: axios.get(`blabla/${id}/email`), name: axios.get(`blabla/${id}/name`)}  )

);

它让我回来了:


[

{email: Promise, name: Promise},{email: Promise, name: Promise},{email: Promise, name: Promise},...

]

现在要获取数据,我要做的是:


  const results = [];

  promises.map(({ email, name}) =>

      Promise.all([email, name]).then((result) => {

        results.push({

          email: result[0].data,

          name: result[1].data,

        });

      })

    );

但我有一种感觉,这可能不是一个好方法,我的意思是它现在可以工作,但我不想以后再遇到任何问题!哈哈,例如,承诺之间的竞赛,或者例如,为另一个用户设置的用户电子邮件。我不知道它们是否可能发生,但我需要与您的专家核实,如果您确认这种方式或您是否提出其他建议。


查看完整回答
反对 回复 2022-10-08
?
隔江千里

TA贡献1906条经验 获得超10个赞

我会这样做。


const promises = ids.map(

   id => (  [axios.get(`blabla/${id}/email`), axios.get(`blabla/${id}/name`)]  )

);

Promise.all(promises.map(Promise.all).then(

    ([email, name]) => {

        console.log(email, name)

    }

)).then(values => {

    console.log(values);

});


查看完整回答
反对 回复 2022-10-08
  • 2 回答
  • 0 关注
  • 85 浏览
慕课专栏
更多

添加回答

举报

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