@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 736 B
JavaScript
import{onAbortOrThrow as e,always as t}from"../../../../core/promiseUtils.js";class r{constructor(e,t){this._requester=e,this._apiKey=t,this._activeRequests=new Set}get busy(){return this._requester.busy}request(r,s,o){const l=new AbortController,a=e(o,(()=>l.abort())),n={signal:l.signal,query:{token:this._apiKey}},i=this._requester.request(r,s,n),u={response:i,abortController:l,abortHandle:a};return this._activeRequests.add(u),t(i,(()=>{u.abortController=null,u.abortHandle?.remove(),u.abortHandle=null,this._activeRequests.delete(u)})),i}cancelAll(){this._activeRequests.forEach((e=>{e.abortController?.abort(),e.abortController=null,e.abortHandle?.remove()})),this._activeRequests.clear()}}export{r as I3SStreamDataController};