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

在我的反应应用程序中,我有一些用户 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,

        });

      })

    );

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


红糖糍粑
浏览 87回答 2
2回答

弑天下

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

隔江千里

我会这样做。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);});
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript