Dekmer
@Dekmer
Программирую за еду ...

Как добиться закрытия меню перед появлением запроса confirm()?

Есть реализация выпадающего меню посредством показа/скрытия DIV с соответствующими кнопками действий. Куски кода:
// показ
submenusotr.classList.add('active');
...
...
// скрытие
submenusotr.classList.remove('active');
Вопрос: как можно добиться чтобы при выборе пункта этого DIV`а "Удалить" сначала скрывался он сам, а потом возникал запрос confirm() ?
Пробовал применить паузу (нашел на Просторах):
function sleep(milliseconds) {
  const date = Date.now();
  let currentDate = null;
  do {  currentDate = Date.now(); } while (currentDate - date < milliseconds); }

С ней, выше упомянутый DIV, продолжает "висеть" ту самую паузу, потом появляется запрос и потом все благополучно "исчезает".
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
Dekmer
@Dekmer Автор вопроса
Программирую за еду ...
Доброе утро !
По совету IvanU7n рассмотреть setTimeout и промисы, накропал такой подход. Не могу говорить о профессионализме подхода, но(!) работает как мне нужно.
function sleep(ms) { 
    return new Promise(resolve => setTimeout(resolve, ms));
}
function DoDeteteSotr(){
    // Основная функция со всеми операция запросов и 
    // последующего удаления, обновления таблицы и т.д.
	}
// Функция, которую "повесил" на нажатие пункта "Удалить" всплывающего 
// меню (упомянутого в вопросе DIV с кнопками)	
function DeleteSotr() {
	event.preventDefault(); 
	HideSubmenuSotr();    // Функция скрытия всплывающего меню
	sleep(200).then(() => {   // 200 миллисекунд задержки достаточно
	  DoDeteteSotr(); 
	  });
	}


Как всегда благодарю всех !
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы