mirror of
https://github.com/nuxt/nuxt.git
synced 2024-11-29 09:02:03 +00:00
fix(nuxt): clear timeout when asyncData request finishes/aborts (#27308)
This commit is contained in:
parent
811bfc18a1
commit
69430aa26c
@ -164,8 +164,10 @@ export function useFetch<
|
|||||||
* @see https://github.com/unjs/ofetch/blob/bb2d72baa5d3f332a2185c20fc04e35d2c3e258d/src/fetch.ts#L152
|
* @see https://github.com/unjs/ofetch/blob/bb2d72baa5d3f332a2185c20fc04e35d2c3e258d/src/fetch.ts#L152
|
||||||
*/
|
*/
|
||||||
const timeoutLength = toValue(opts.timeout)
|
const timeoutLength = toValue(opts.timeout)
|
||||||
|
let timeoutId: NodeJS.Timeout
|
||||||
if (timeoutLength) {
|
if (timeoutLength) {
|
||||||
setTimeout(() => controller.abort(), timeoutLength)
|
timeoutId = setTimeout(() => controller.abort(), timeoutLength)
|
||||||
|
controller.signal.onabort = () => clearTimeout(timeoutId)
|
||||||
}
|
}
|
||||||
|
|
||||||
let _$fetch = opts.$fetch || globalThis.$fetch
|
let _$fetch = opts.$fetch || globalThis.$fetch
|
||||||
@ -178,7 +180,7 @@ export function useFetch<
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return _$fetch(_request.value, { signal: controller.signal, ..._fetchOptions } as any) as Promise<_ResT>
|
return _$fetch(_request.value, { signal: controller.signal, ..._fetchOptions } as any).finally(() => { clearTimeout(timeoutId) }) as Promise<_ResT>
|
||||||
}, _asyncDataOptions)
|
}, _asyncDataOptions)
|
||||||
|
|
||||||
return asyncData
|
return asyncData
|
||||||
|
Loading…
Reference in New Issue
Block a user