项目实战问题总结:循环发送请求
循环发送请求,除非必要,否则最好还是不要这么干,尤其是前后端分离项目,应当尽量避免发送多条请求,其实大部分场景下都可以找到可替代的方案。
但不排除一定要这么干的时候,这个需求,可以使用Promise,利用递归思想实现链式发送、处理请求。
我的需求
一个可以多选删除的列表,如果被删除项被一些Service调用,要提示无法删除。
正常思路应该是:把待删除项的id放进数组发给后端,后端返回判断结果,然后前端根据判断结果提示用户。
因为某些原因,实际思路为:前端遍历待删除项的id,依次发送能否删除的请求,如果有一条不能删除,那么所有项都不可删除,根据后端响应提示用户。
所以就用到了野路子——递归实现循环发送请求。
代码
private checkReference = (//递归方法在此
deleteIdList: string[],
previousItemReference?: boolean,//上一层递归的数据。
): Promise<any> => {
const deleteId = deleteIdList.pop()!;
return deleteId
? getExecutionScheduleReference(deleteId)
.then((data) => {
const hasReference = data.length > 0