T
TanStack•15mo ago
sensitive-blue

infiniteQueryBehavior :: adding removeEventListener of the signal

Hi, i was studying react-query code and at infiniteQueryBehavior.ts i saw you attach a listener to the signal
const addSignalProperty = (object: unknown) => {
Object.defineProperty(object, 'signal', {
enumerable: true,
get: () => {
if (context.signal.aborted) {
cancelled = true
} else {
context.signal.addEventListener('abort', () => {
cancelled = true
})
}
return context.signal
},
})
}
const addSignalProperty = (object: unknown) => {
Object.defineProperty(object, 'signal', {
enumerable: true,
get: () => {
if (context.signal.aborted) {
cancelled = true
} else {
context.signal.addEventListener('abort', () => {
cancelled = true
})
}
return context.signal
},
})
}
I was wondering if this listener is removed somewhere else, or the following code can be used to removeEventListener
const addSignalProperty = (object: unknown) => {
let onAbortContext: (() => void) | null = null;
Object.defineProperty(object, 'signal', {
enumerable: true,
get: () => {
if (context.signal.aborted) {
cancelled = true
} else {
onAbortContext = () => {
cancelled = true;
// Clean up listener to prevent memory leak
context.signal.removeEventListener('abort', onAbortContext!);
onAbortContext = null;
};
context.signal.addEventListener('abort',onAbortContext)
}
return context.signal
},
})
}
const addSignalProperty = (object: unknown) => {
let onAbortContext: (() => void) | null = null;
Object.defineProperty(object, 'signal', {
enumerable: true,
get: () => {
if (context.signal.aborted) {
cancelled = true
} else {
onAbortContext = () => {
cancelled = true;
// Clean up listener to prevent memory leak
context.signal.removeEventListener('abort', onAbortContext!);
onAbortContext = null;
};
context.signal.addEventListener('abort',onAbortContext)
}
return context.signal
},
})
}
I'm new to the Open source project, this is why i posted here the suggestion. feel free to use this snippet if you feel it makes sense 😀
0 Replies
No replies yetBe the first to reply to this messageJoin

Did you find this page helpful?