Выполните код слушателя события немедленно, если событие отправлено хотя бы один раз - PullRequest
0 голосов
/ 29 июня 2018
// Event listener registered before event dispatched.
document.addEventListener('myappready', function (e) {
 console.log("I am always on time :) ");
});

// Dispatch the event.
document.dispatchEvent(new Event('myappready'));

// Event listener registered after event dispatched.
document.addEventListener('myappready',  function() {
   console.log("I am always late :( ");
});

Дает вывод:

I am always on time :)

Но я хочу вывод:

I am always on time :)
I am always late :(

1 Ответ

0 голосов
/ 29 июня 2018

Вы могли бы сделать это, внедрив оболочку для вашего addEventListener, которая затем могла бы отслеживать, было ли событие уже запущено, если это так, просто немедленно вызвать обратный вызов.

например.

function myAppReady(cb) {
  if (!myAppReady.ready) {
    document.addEventListener('myappready',function () {
      myAppReady.ready = true;
      cb();
    });
  } else cb();
}
myAppReady.ready = false;


// On time..
myAppReady(function () {
  console.log("I am always on time :) ");
});

// Dispatch the event.
document.dispatchEvent(new Event('myappready'));

// Event listener registered after event dispatched.
myAppReady(function() {
   console.log("I am always late :( ");
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...