Здравствуйте, уважаемые!
Нуждаюсь в синхронизации событий.
/* кусок который не доступен для изменения (условно) */
const btnNode = document.querySelector('#btn');
const mainFunc = () => {
// событие
}
btnNode.addEventListener('click', mainFunc);
/* кусок который не доступен для изменения (условно) */
const priorityFunc = async () => {
const a = await new Promise(res => res(true));
// приоритетное событие
}
btnNode.addEventListener('click', priorityFunc);
/* последняя */
const lastFunc = () => {
// событие добавленное через какое-то время
}
btnNode.addEventListener('click', lastFunc);
Как сделать:
1) Хотелось бы добавить свою функцию-событие (priorityFunc), которая будет выполняться всегда первая и другие не запустятся пока она полностью не завершится. (со вторым справлюсь сам.)
2) а также знать как сделать так, что бы функция (priorityFunc) всегда выполнялась последняя, даже если кто-то потом допишет lastFunc (хотя он тоже может захотеть что бы его событие было всегда последним).
Тут можно, наверное, использовать setTimeout(), но сколько ставить задержку, что бы пользователь не думал что сайт тормозит.
В общем как правильно синхронизировать события и расставлять приоритеты?
Спасибо за внимание.