Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ReactJS:如何同时发出两个后端请求?_Javascript_Python_Reactjs_Parallel Processing_Axios - Fatal编程技术网

Javascript ReactJS:如何同时发出两个后端请求?

Javascript ReactJS:如何同时发出两个后端请求?,javascript,python,reactjs,parallel-processing,axios,Javascript,Python,Reactjs,Parallel Processing,Axios,是否可以从react同时发出两个后端请求 下面的代码是第一个后端调用。post请求被发送到后端,然后我想做另一个请求。有可能吗?或者我必须等待后端响应,直到下一个请求发出? 我基本上想得到的是关于上传了多少文件的信息。上传可能需要3分钟,用户现在只看到一个加载图标。我想另外添加一个文本,比如上传的800篇文献中的50篇,10秒后上传的800篇文献中的100篇 这基本上是我的代码: class ProjectLiterature extends Component { constructor(

是否可以从react同时发出两个后端请求

下面的代码是第一个后端调用。post请求被发送到后端,然后我想做另一个请求。有可能吗?或者我必须等待后端响应,直到下一个请求发出? 我基本上想得到的是关于上传了多少文件的信息。上传可能需要3分钟,用户现在只看到一个加载图标。我想另外添加一个文本,比如上传的800篇文献中的50篇,10秒后上传的800篇文献中的100篇

这基本上是我的代码:

class ProjectLiterature extends Component {
  constructor(props) {
    super(props);
    this.state = {

      isLoading:"false",
}
}
  addLiterature(data, project_name) {

    this.setState({ isLoading:true }, () => {
      axios.post("http://127.0.0.1:5000/sendLiterature", data })
        .then(res => {

          this.setState({ isLoading: false })
        })
    })
  }

如果两个请求互不依赖,您可以使用JavaScript实现上述目的

const request1 = axios.get('http://127.0.0.1:5000/sendLiterature');
const request2 = axios.get(url2);

Promise.all([request1,request2]).then([res1, res2] => {
  // handle the rest
}).catch((error) =>  {
  console.error(error);
  // carry out error handling
});
如果第二个请求依赖于第一个请求的响应,则必须等待第一个请求完成,因为两个请求都必须按顺序执行

const res = await axios.get('http://127.0.0.1:5000/sendLiterature');
// carry out the rest
您可以看到,出于这个目的,它们支持开箱即用的多个请求。
您也可以使用Promise.all而不是axios.all,但如果其中一个请求失败,您将无法获得成功调用的响应。如果您希望在某些调用失败的情况下获得成功响应,则可以使用Promise.AllSetted。

您的请求是否按顺序完成,即是否需要第二次调用中第一次调用的数据?如果任何请求失败,它将进入catch块,这意味着即使一个成功,它也将失败,所以你也需要处理这种情况。把这部分也加起来,这样对他来说也有帮助。所以第一个请求是post请求,它将文献发布到数据库。第二个请求是get请求,它获取已经添加到数据库中的文献量。因此,例如,如果第一个请求向数据库发送800个对象,并且完成了一半,则数据库中有400个文献对象,第二个请求应获得值为400的后端响应。所以这取决于第一个请求啊。。我懂了。。在这种情况下,你不应该使用Promise.all或Promise.all。您必须等待第一个请求完成,然后才能触发第二个请求。因此,无法每隔20秒并行调用后端并检查数据库的长度,以了解已上载的对象数?