diff options
Diffstat (limited to 'plugins/CoreHome/vue/src/AjaxHelper/AjaxHelper.ts')
-rw-r--r-- | plugins/CoreHome/vue/src/AjaxHelper/AjaxHelper.ts | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/plugins/CoreHome/vue/src/AjaxHelper/AjaxHelper.ts b/plugins/CoreHome/vue/src/AjaxHelper/AjaxHelper.ts index f128ae6c32..a3965760b8 100644 --- a/plugins/CoreHome/vue/src/AjaxHelper/AjaxHelper.ts +++ b/plugins/CoreHome/vue/src/AjaxHelper/AjaxHelper.ts @@ -346,7 +346,7 @@ export default class AjaxHelper<T = any> { // eslint-disable-line /** * Send the request */ - send(): Promise<T> { + send(): AbortablePromise<T> { if ($(this.errorElement).length) { $(this.errorElement).hide(); } @@ -358,7 +358,7 @@ export default class AjaxHelper<T = any> { // eslint-disable-line this.requestHandle = this.buildAjaxCall(); window.globalAjaxQueue.push(this.requestHandle); - return new Promise<T>((resolve, reject) => { + const result: AbortablePromise<T> = new Promise<T>((resolve, reject) => { this.requestHandle!.then(resolve).fail((xhr: jqXHR) => { if (xhr.statusText !== 'abort') { console.log(`Warning: the ${$.param(this.getParams)} request failed!`); @@ -366,7 +366,15 @@ export default class AjaxHelper<T = any> { // eslint-disable-line reject(xhr); } }); - }); + }) as AbortablePromise<T>; + + result.abort = () => { + if (this.requestHandle) { + this.requestHandle.abort(); + } + }; + + return result; } /** |