Alternatively, we can create a reusable utility function as a means of creating a promise from any DOM event:
const createPromiseFromDomEvent = (eventTarget, eventName, run?) => new Promise(resolve => { const handleEvent = () => { eventTarget.removeEventListener(eventName, handleEvent); resolve(); }; eventTarget.addEventListener(eventName, handleEvent); if (run) run(); });
Usage example (with source MSE buffer):
await createPromiseFromDomEvent( sourceBuffer, 'updatend', () => sourceBuffer.remove(3, 10) );
Depending on the situation, the run
parameter may be required to provide user code that starts the asynchronous operation (as described above), or it may be skipped if we know that the operation has already begun.
source share