首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在React中使用promises等待函数在JavaScript映射函数中完成

在React中使用promises等待函数在JavaScript映射函数中完成
EN

Stack Overflow用户
提问于 2018-09-27 04:27:54
回答 1查看 247关注 0票数 0

我一直在尝试找出为这个函数写一个promise的正确方法。我有一个异步函数,它向服务器发出HTTP请求以检索响应“documents_fileUploader”。我通过响应中每个项目的" url“进行映射,每个url都会进入一个函数,该函数发出另一个HTTP请求,然后设置状态。我只想在"documents_fileUploader()“函数内的所有操作完成后才触发"upload()”函数。我试着在没有承诺的情况下这样做,它直接转到了我的"upload()“函数,因为请求仍在等待。对如何做这件事有什么建议吗?

代码语言:javascript
复制
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);
  })
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-27 04:37:38

对于您的主要问题,您可以使用method.

  • Second,
  • 等待.map调用返回的每个promise。为了使其正常工作,getFileObject函数必须返回它创建的promise。

因此,结合这两个更改,您的代码片段可能如下所示:

代码语言:javascript
复制
documents_fileUploader(formData).then(resp => {
  return Promise.all(resp.data.items.map(url => { // Wrap in Promise.all and return it
    const key = url.split("/")[4];
    this.setState({
      urls: [...this.state.urls, url],
      keys: [...this.state.keys, key]
    });
    return this.getFileObject(key); // Make sure to return this promise as well.
  }));
}).then(() => {
   // Now this won't happen until every `getFileObject` promise has resolved...
  this.upload();
})

getFileObject = file => {
  return file_view(file).then(resp => { // And return the promise here.
    this.setState({
      mimeTypes: [...this.state.mimeTypes, resp.data.item.headers.contentType]
    })
  }).catch(err => {
    console.log(err);
  })
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52525594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档