svga-web
Version:
A SVGA player for modern Web.
43 lines (35 loc) • 906 B
text/typescript
export default class Downloader {
request: XMLHttpRequest | null
constructor() {
this.request = null
}
get(svgaResourceLink: string): Promise<ArrayBuffer> {
if (!svgaResourceLink) {
throw new Error('download link undefined')
}
return new Promise((resolve, reject) => {
const request = new XMLHttpRequest()
request.open('GET', svgaResourceLink, true)
request.responseType = 'arraybuffer'
request.onloadend = () => {
if (
request.response &&
(request.status === 200 || request.status === 304)
) {
resolve(request.response)
} else {
reject(request)
}
}
request.onerror = () => reject(request.response)
request.send()
this.request = request
})
}
cancel(): void {
this.request?.abort()
}
destroy(): void {
this.request?.abort()
}
}