From f288f60239e8db5f7d9ee6f3918d70c9d0413ac6 Mon Sep 17 00:00:00 2001 From: Brandon Liu Date: Tue, 8 Jun 2021 18:41:58 +0800 Subject: [PATCH] maplibre: cancel correctly captued in closure [#6] --- js/index.src.mjs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/js/index.src.mjs b/js/index.src.mjs index b65d9c3..4519a18 100644 --- a/js/index.src.mjs +++ b/js/index.src.mjs @@ -206,22 +206,24 @@ export const addProtocol = maplibre_instance => { let z = result[2] let x = result[3] let y = result[4] - var cancel = () => {} + var cancel = () => { } instance.getZxy(+z,+x,+y).then(val => { if (val) { let headers = {'Range':'bytes=' + val[0] + '-' + (val[0]+val[1]-1)} const controller = new AbortController() const signal = controller.signal + cancel = () => { controller.abort() } fetch(pmtiles_url,{signal:signal,headers:headers}).then(resp => { return resp.arrayBuffer() }).then(arr => { callback(null,arr,null,null) + }).catch(e => { + callback(new Error("Canceled"),null,null,null) }) - cancel = controller.abort } else { callback(null,new Uint8Array(),null,null) } }) - return { cancel: cancel } + return { cancel: () => { cancel() } } }) }