2 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊
在我的反應(yīng)應(yīng)用程序中,我有一些用戶 ID,需要從不同的端點(diǎn)獲取他們的電子郵件和姓名,所以我要做的是:
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},...
]
現(xiàn)在要獲取數(shù)據(jù),我要做的是:
const results = [];
promises.map(({ email, name}) =>
Promise.all([email, name]).then((result) => {
results.push({
email: result[0].data,
name: result[1].data,
});
})
);
但我有一種感覺,這可能不是一個(gè)好方法,我的意思是它現(xiàn)在可以工作,但我不想以后再遇到任何問題!哈哈,例如,承諾之間的競(jìng)賽,或者例如,為另一個(gè)用戶設(shè)置的用戶電子郵件。我不知道它們是否可能發(fā)生,但我需要與您的專家核實(shí),如果您確認(rèn)這種方式或您是否提出其他建議。

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超10個(gè)贊
我會(huì)這樣做。
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);
});
添加回答
舉報(bào)