Javascript 处理多重异步调用,并在更新状态之前等待所有调用完成

Javascript 处理多重异步调用,并在更新状态之前等待所有调用完成,javascript,arrays,reactjs,ajax,Javascript,Arrays,Reactjs,Ajax,我尝试进行多个异步调用。在更新组件状态之前,我需要等待每个调用完成 以下是我到目前为止的注释代码(我试图用注释澄清): handleBatchDelete=()=>{ const selected_id_to_delete=[58,75.86,103]//按id删除的元素列表 const deleted_id=[]//初始化将成功删除的元素的空列表 const failed_id=[]//初始化将无法删除的元素的空列表 //遍历所有要删除的ID 已选择要删除的\u id\u.map(id=>{

我尝试进行多个异步调用。在更新组件状态之前,我需要等待每个调用完成

以下是我到目前为止的注释代码(我试图用注释澄清):

handleBatchDelete=()=>{
const selected_id_to_delete=[58,75.86,103]//按id删除的元素列表
const deleted_id=[]//初始化将成功删除的元素的空列表
const failed_id=[]//初始化将无法删除的元素的空列表
//遍历所有要删除的ID
已选择要删除的\u id\u.map(id=>{
//对于每个id调用,删除api:这里是异步调用!!
删除项目(id)。然后(res=>{
//成功=>将此id添加到已删除的\u id数组
已删除\u id.push(id)
}).catch(错误=>{
//失败=>将此id添加到失败的\u id数组
推送(id)失败
log(`尝试删除此id时出错:${id},消息:${error}`)
})
})
//当然,这将在任何异步调用之前执行…我想在执行这些行之前等待所有调用
如果(已删除\u id.length>0){
//从包含已删除项目的状态筛选实际数据
常量数据=[…this.state.data].filter(
(elem)=>!已删除\u id.find(id=>elem.id===id)
);
//最后用新数据设置状态
this.setState({data});
}
};
谢谢你的帮助

使用

const promises=[];
//遍历所有要删除的ID
已选择要删除的\u id\u.map(id=>{
//对于每个id调用,删除api:这里是异步调用!!
const promise=删除项目(id)。然后(res=>{
//成功=>将此id添加到已删除的\u id数组
已删除\u id.push(id)
}).catch(错误=>{
//失败=>将此id添加到失败的\u id数组
推送(id)失败
log(`尝试删除此id时出错:${id},消息:${error}`)
})
承诺。推动(承诺);
})
承诺。所有(承诺)。然后(()=>{
//全部完成
});

你检查过了吗?没有。我来试一试。谢谢你的推荐