diff --git a/src/resources/resources.js b/src/resources/resources.js index 919676311..bb1daa063 100644 --- a/src/resources/resources.js +++ b/src/resources/resources.js @@ -31,6 +31,8 @@ export function createResource(options, vm) { ? debounce(fetch, options.debounce) : fetch + const controller = new AbortController() + let out = reactive({ method: options.method, url: options.url, @@ -45,6 +47,7 @@ export function createResource(options, vm) { fetch: fetchFunction, reload: fetchFunction, submit: fetchFunction, + abort: () => controller.abort(), reset, update, setData, @@ -95,6 +98,8 @@ export function createResource(options, vm) { } } + options.signal = controller.signal + try { out.promise = resourceFetcher({ ...options, diff --git a/src/utils/request.js b/src/utils/request.js index 1ccb74312..1420ec223 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -31,6 +31,7 @@ export function request(_options) { method: options.method || 'GET', headers: options.headers, body, + signal: options.signal, }) .then((response) => { if (options.transformResponse) {