Javascript ReactJS:如何同时发出两个后端请求?
是否可以从react同时发出两个后端请求 下面的代码是第一个后端调用。post请求被发送到后端,然后我想做另一个请求。有可能吗?或者我必须等待后端响应,直到下一个请求发出? 我基本上想得到的是关于上传了多少文件的信息。上传可能需要3分钟,用户现在只看到一个加载图标。我想另外添加一个文本,比如上传的800篇文献中的50篇,10秒后上传的800篇文献中的100篇 这基本上是我的代码: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(
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秒并行调用后端并检查数据库的长度,以了解已上载的对象数?