我想选择100个音频文件在同一时间,但要打只有3个API调用在同一时间。一旦这3个文件上传(通过或失败),然后只有其他3 api请求将被发送。
基本上,我提供了一个文件类型的输入字段:
<input type="file" multiple name="file" className="myform"
onChange={handleFileChange}
accept="audio/wav"
/>
我把它作为数组存储到一个状态中。下面我提供了一个上传按钮。当用户点击上传时,我想用axios发送3个POST请求。一旦所有3个都完成了,要么失败要么通过,那么只有接下来的3个应该去。
1条答案
按热度按时间zzlelutf1#
您可以通过以3个为一组迭代
FileList
集合并使用Promise.allSettled()并行发送请求来实现这一点。因为我不推荐Axios,所以这里有一个使用Fetch API的版本
Promise.allSettled()
将允许您在上传每组3个文件后继续,无论它们是通过还是失败。此方法发出3个单独的请求,每个请求包含1个文件。
使用Axios时,它将如下所示(只是替换了
for
循环)Axios的
postForm()
方法从v1.0.0开始提供。请参见https://github.com/axios/axios#files-posting如果您想在一个请求中发送3个文件,Fetch将如下所示
这是Axios的