-
Notifications
You must be signed in to change notification settings - Fork 100
Open
Labels
1.0Pullrequests & issues related to the Typescript rewrite and 1.0 releasePullrequests & issues related to the Typescript rewrite and 1.0 releaseenhancementSuggests, requests, or implements a feature or enhancementSuggests, requests, or implements a feature or enhancement
Description
We can register a callback with an RSocket
using the onClose
method. We do not currently have any way to deregister a previously registered callback.
Motivation
I'm sure there are other use cases, however, this would be useful when paired with the useEffect
hook in React, which expect to be able to "undo" registrations and side-effects.
useEffect(() => {
const id = rsocket.onClose((e) => {
console.log(e);
});
return () => {
rsocket.removeCloseListener(id);
};
}, [rsocket]);
Desired solution
RSocket
, likely through Closeable
, could be extended to allow deregistration of callbacks. This might be best with having Closeable
more closely resemble event emitter APIs.
// add a listener
const id = rsocket.onClose.addEventListener(() => {...});
// remove a listener
rsocket.onClose.removeEventListener(id);
Considered alternatives
Rsocket.onClose
could implement/expose an observable that would natively support subscriptions. This could use existing types such as Cancellable
and OnTerminalSubscriber
.
Metadata
Metadata
Assignees
Labels
1.0Pullrequests & issues related to the Typescript rewrite and 1.0 releasePullrequests & issues related to the Typescript rewrite and 1.0 releaseenhancementSuggests, requests, or implements a feature or enhancementSuggests, requests, or implements a feature or enhancement