【发布时间】:2020-01-18 14:53:45
【问题描述】:
我正在我的函数中调用 API 来获取一些数据。 然后,我需要根据第一次调用的特定值对返回的每个数据项进行多次 API 调用。我在渲染状态时遇到问题,从多个 Promise 添加的值在渲染期间不存在。
到目前为止,我有这样的事情:
fetch(url)
.then(resp => resp.json())
.then(data => {
//do some calculations and populate new array and return it
})
.then(data => {
const newData = [...data];
Promise.all(functionWhichReturnsArrayOfPromises).then(el => {
// more calculation
newData.push(el.someValue);
})
return newData;
})
.then(data => this.setState({data: data}))
返回 promise 数组的函数看起来像这样:
fetchMoreData(arr) {
const promises = arr.map(el => {
return fetch(someUrl)
.then(data => data.json())
.then(data => data)
})
return promises;
}
我认为我将 Promise.all 链接到另一个 Promise 中并不好,有推荐的更优雅的方法吗?
【问题讨论】:
-
返回
Promise.all结果将正确推迟setState。现在,就像帕特里克所说的那样,它在进入状态后正在改变数组。 -
一个小问题:
.then(data => data)没有添加任何内容。
标签: javascript reactjs fetch es6-promise