Advertisement
Guest User

Untitled

a guest
Oct 6th, 2022
30
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const waitFor = () => {
  2.     const promise = new Promise(resolve => {
  3.         promise.resolve = resolve;
  4.     });
  5.     return promise;
  6. };
  7. const events = {
  8.     eventA: waitFor(),
  9.     eventB: waitFor(),
  10. }
  11. something.addEventListener('message', e => {
  12.     events[e.data?.something]?.resolve(e); // assuming data is sent like {something: 'eventA'}
  13. });
  14. Promise.race([Promise.all(Object.values(events)), new Promise((resolve, reject) => setTimeout(reject, 10000, 'timeout'))])
  15. .then(data => {
  16.     //  events received
  17. })
  18. .catch(timeout => {
  19.     // timeout happened
  20. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement