Javascript:中止函数

Javascript:中止函数,javascript,Javascript,有一个函数,当调用它时,需要几分钟来完成。 函数获取可用课程的列表,然后调用另一个服务获取课程的详细信息 当调用函数时,我需要停止它以前的实例(如果有的话)。我怎样才能做到这一点 我已经写了下面的代码段。这是个好主意吗?如果我调用cancel.abort它将只停止主函数还是停止所有嵌套服务调用 constCustomXMLHttpRequest=(url,opts={},cancel={},timeoutMS=30000)=>{ var xhr=new XMLHttpRequest(); xh

有一个函数,当调用它时,需要几分钟来完成。 函数获取可用课程的列表,然后调用另一个服务获取课程的详细信息

当调用函数时,我需要停止它以前的实例(如果有的话)。我怎样才能做到这一点

我已经写了下面的代码段。这是个好主意吗?如果我调用
cancel.abort
它将只停止主函数还是停止所有嵌套服务调用

constCustomXMLHttpRequest=(url,opts={},cancel={},timeoutMS=30000)=>{
var xhr=new XMLHttpRequest();
xhr.open(opts.method | |'get',url);
xhr.timeout=timeoutMS;//以毫秒为单位的时间
for(opts.headers | |{}中的变量k){
setRequestHeader(k,opts.Header[k]);
}
返回新承诺((解决、拒绝)=>{
xhr.onload=e=>resolve(e.target);
cancel.abort=()=>{
xhr.abort();
拒绝(新错误(“已取消”))
};
xhr.onerror=拒绝;
xhr.ontimeout=()=>{
拒绝(新错误(“超时”))
}
xhr.send(选择正文);
});
}
const getCourses=(取消)=>{
返回新承诺((解决、拒绝)=>{
cancel.abort=()=>{
拒绝(新错误(“已取消”)
}
customXmlHttpRequest('/courselist',{},取消)
。然后((res)=>{
let response=res._response.json();
response.forEach((id)=>{
customXmlHttpRequest('/CoursedDetails'+id,{},取消)
。然后((res)=>{
let response=res._response.json();
////做剩下的
})
.catch((e)=>{
拒绝(e);
})
.完成();
})
})
.catch((e)=>{
拒绝(e);
})
.完成();
})
}
///////////
让cancel={};
补习课程(取消);

cancel.abort()
“调用getCourses(cancel)后,如果调用cancel.abort(),它会中止所有正在运行的函数和服务调用吗?”-您尝试过吗?不幸的是,我无法测试它。因此,在花更多时间研究它之前,我在这里问它是否有更好的解决方案/实现。“在调用getCourses(cancel)之后,如果我调用cancel.abort(),它会中止所有正在运行的函数和服务调用吗?”-您尝试过吗?不幸的是,我无法测试它。因此,在花更多时间研究它之前,我在这里询问它,看看是否有更好的解决方案/实施方案。