【发布时间】:2018-09-27 04:38:45
【问题描述】:
我一直在试图找出为这个函数编写承诺的正确方法。我有一个异步函数,它向服务器发出 HTTP 请求以检索响应“documents_fileUploader”。我正在通过响应中每个项目的“url”进行映射,每个 url 将进入一个函数,该函数发出另一个 HTTP 请求,然后设置状态。只有在“documents_fileUploader()”函数中的所有内容都完成后,我才想触发“upload()”函数。我尝试在没有承诺的情况下这样做,它直接进入我的“upload()”函数,因为请求仍在等待中。有什么建议可以解决这个问题吗?
documents_fileUploader(formData).then(resp => {
resp.data.items.map(url => {
const key = url.split("/")[4];
this.setState({
urls: [...this.state.urls, url],
keys: [...this.state.keys, key]
});
this.getFileObject(key);
})
}).then(() => {
this.upload();
})
getFileObject = file => {
file_view(file).then(resp => {
this.setState({
mimeTypes: [...this.state.mimeTypes, resp.data.item.headers.contentType]
})
}).catch(err => {
console.log(err);
})
}
【问题讨论】:
标签: javascript reactjs asynchronous promise mapping