UNPKG

video-ad-sdk

Version:

VAST/VPAID SDK that allows video ads to be played on top of any player

36 lines (32 loc) 729 B
import {once} from './once' interface WaitFor<T> { cancel(): void promise: Promise<T> } export const waitFor = <T extends any[]>( element: HTMLElement, event: string ): WaitFor<T> => { let pending = true let resolvePromise: (result: T) => void let rejectPromise: (error: Error) => void const promise = new Promise<T>((resolve, reject) => { resolvePromise = resolve rejectPromise = reject }) const cancelOnce = once(element, event, (...args) => { pending = false resolvePromise(args as T) }) const cancel = (): void => { if (pending) { pending = false cancelOnce() rejectPromise(new Error('waitFor was canceled')) } } return { cancel, promise } }