@starostyants

Как вернуть значение из функции после выполнения события?

Как дождаться некоторого события перед возвращением значения функцией? К примеру, нужно по разному отреагировать в зависимости от того, какую кнопку нажал пользователь. Подозреваю, что здесь нужны промисы, но не понимаю, как их можно использовать в моей ситуации.

function getInputResult() {
  var result = ... // здесь ожидается действия, например, клик по Cancel или Save
  if (result === 'Cancel') {
    return false;
  } else {
   return 'Сохраняем...';
  }
}

getInputResult();
  • Вопрос задан
  • 375 просмотров
Пригласить эксперта
Ответы на вопрос 2
@citizen55
а какая практическая польза от этой функции?
Почему нельзя это сделать в обработчиках событий.
Ответ написан
Комментировать
AngReload
@AngReload
Кратко о себе
Увы, если внутри getInputResult есть что-то асинхронное, то она не сможет вернуть результат этого обратно в синхронный код. Все штуки типа промисов и await работают с колбеками или внутри асинхронных функций. И если делать что-то такое, то оно всё-равно будет поверх обработчиков событий.
Так что лучше посмотри как это делается просто с помощью навешивания обработчиков событий:
var buttonSave = document.querySelector('#save');
var buttonCancel = document.querySelector('#cancel');

buttonSave.addEventListener('click', function () {
  "сделать что-то при нажатии на сохранить"
});

buttonCancel.addEventListener('click', function () {
  "сделать что-то при нажатии на отмена"
});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы