@telnyx/react-native-voice-sdk
Version:
Telnyx React Native Voice SDK - A complete WebRTC voice calling solution
29 lines (24 loc) • 742 B
text/typescript
function debounce<T extends unknown[]>(
fn: (...args: T) => void,
delay: number
): (...args: T) => void {
let timeoutId: ReturnType<typeof setTimeout>;
return (...args: T) => {
clearTimeout(timeoutId);
timeoutId = setTimeout(() => fn(...args), delay);
};
}
export type DeferredPromise<T> = {
promise: Promise<T>;
resolve: (v: T) => void;
reject: (e: unknown) => void;
};
export const createDeferredPromise = <T>(debounceTime = 0): DeferredPromise<T> => {
let resolve: (v: T) => void;
let reject: (e: unknown) => void;
const promise = new Promise<T>((r, j) => {
resolve = debounceTime > 0 ? debounce(r, debounceTime) : r;
reject = j;
});
return { promise, resolve: resolve!, reject: reject! };
};