maplibre: cancel correctly captued in closure [#6]

This commit is contained in:
Brandon Liu
2021-06-08 18:41:58 +08:00
parent 4936526d19
commit f288f60239

View File

@@ -206,22 +206,24 @@ export const addProtocol = maplibre_instance => {
let z = result[2] let z = result[2]
let x = result[3] let x = result[3]
let y = result[4] let y = result[4]
var cancel = () => {} var cancel = () => { }
instance.getZxy(+z,+x,+y).then(val => { instance.getZxy(+z,+x,+y).then(val => {
if (val) { if (val) {
let headers = {'Range':'bytes=' + val[0] + '-' + (val[0]+val[1]-1)} let headers = {'Range':'bytes=' + val[0] + '-' + (val[0]+val[1]-1)}
const controller = new AbortController() const controller = new AbortController()
const signal = controller.signal const signal = controller.signal
cancel = () => { controller.abort() }
fetch(pmtiles_url,{signal:signal,headers:headers}).then(resp => { fetch(pmtiles_url,{signal:signal,headers:headers}).then(resp => {
return resp.arrayBuffer() return resp.arrayBuffer()
}).then(arr => { }).then(arr => {
callback(null,arr,null,null) callback(null,arr,null,null)
}).catch(e => {
callback(new Error("Canceled"),null,null,null)
}) })
cancel = controller.abort
} else { } else {
callback(null,new Uint8Array(),null,null) callback(null,new Uint8Array(),null,null)
} }
}) })
return { cancel: cancel } return { cancel: () => { cancel() } }
}) })
} }