mirror of
https://github.com/morgan9e/chatgpt-web
synced 2026-04-14 00:14:04 +09:00
Fix memory leak with abort controller
This commit is contained in:
@@ -47,7 +47,6 @@ export class ChatRequest {
|
||||
count = count || 1
|
||||
_this.updating = true
|
||||
_this.updatingMessage = 'Generating Image...'
|
||||
const signal = _this.controller.signal
|
||||
const size = this.chat.settings.imageGenerationSize
|
||||
const request: RequestImageGeneration = {
|
||||
prompt,
|
||||
@@ -55,6 +54,16 @@ export class ChatRequest {
|
||||
size,
|
||||
n: count
|
||||
}
|
||||
// fetchEventSource doesn't seem to throw on abort,
|
||||
// so we deal with it ourselves
|
||||
_this.controller = new AbortController()
|
||||
const signal = _this.controller.signal
|
||||
const abortListener = (e:Event) => {
|
||||
chatResponse.updateFromError('User aborted request.')
|
||||
signal.removeEventListener('abort', abortListener)
|
||||
}
|
||||
signal.addEventListener('abort', abortListener)
|
||||
// Create request
|
||||
const fetchOptions = {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
@@ -180,7 +189,15 @@ export class ChatRequest {
|
||||
// (streaming doesn't return counts, so we need to do it client side)
|
||||
chatResponse.setPromptTokenCount(promptTokenCount)
|
||||
|
||||
// fetchEventSource doesn't seem to throw on abort,
|
||||
// so we deal with it ourselves
|
||||
_this.controller = new AbortController()
|
||||
const signal = _this.controller.signal
|
||||
const abortListener = (e:Event) => {
|
||||
chatResponse.updateFromError('User aborted request.')
|
||||
signal.removeEventListener('abort', abortListener)
|
||||
}
|
||||
signal.addEventListener('abort', abortListener)
|
||||
|
||||
const fetchOptions = {
|
||||
method: 'POST',
|
||||
@@ -192,15 +209,6 @@ export class ChatRequest {
|
||||
signal
|
||||
}
|
||||
|
||||
// fetchEventSource doesn't seem to throw on abort,
|
||||
// so we deal with it ourselves
|
||||
const abortListener = (e:Event) => {
|
||||
_this.controller = new AbortController()
|
||||
chatResponse.updateFromError('User aborted request.')
|
||||
signal.removeEventListener('abort', abortListener)
|
||||
}
|
||||
signal.addEventListener('abort', abortListener)
|
||||
|
||||
if (opts.streaming) {
|
||||
/**
|
||||
* Streaming request/response
|
||||
|
||||
Reference in New Issue
Block a user