Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const waitFor = () => {
- const promise = new Promise(resolve => {
- promise.resolve = resolve;
- });
- return promise;
- };
- const events = {
- eventA: waitFor(),
- eventB: waitFor(),
- }
- something.addEventListener('message', e => {
- events[e.data?.something]?.resolve(e); // assuming data is sent like {something: 'eventA'}
- });
- Promise.race([Promise.all(Object.values(events)), new Promise((resolve, reject) => setTimeout(reject, 10000, 'timeout'))])
- .then(data => {
- // events received
- })
- .catch(timeout => {
- // timeout happened
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement