Как стать автором
Обновить

Комментарии 5

В комментариях как всегда жду конструктивную и обоснованную критику.

1) Почему не используете async, await? Ваш код будет гораздо проще.
2) Из своего опыта скажу, что делать reject на отмену действия пользователя — не самый удачный вариант. Бывает так, что в коде идет последовательная цепочка действий, при которой, если произойдет ошибка необходимо режектить. И тогда может случиться каша из состояний — то ли отмена пользователя, то ли прикладная ошибка. Суть думаю уловили.

Но идею с обобщением решения поддерживаю. Я использую чаще такую конструкцию, если переложить ее на Ваш пример
async delete(data): Promise<void> {
    const userAnswer = await this.deleteModal.showAsync();
    if (userAnswer === UserAnswer.YES) {
       await this.deleteUserEndpoint.execute(data);
    }
 }


Пример выше без обработок ошибок, так ак это другая история

Как чистить колбэки? Я бы использовал rxjs. Позволяет контролировать потоки и отменять их, с промисами не видел адекватного решения, пусть код на async await и выглядит приятнее

Плюсую, использовал похожий подход в реакт + редакс, выглядело примерно так же. Очень удобно
const showPopup = () => async (dispatch) => {
  const answer = await dispatch(showPopupDialog(DIALOG_MODEL.MY_AWESOME_DIALOG));
  if (answer === DIALOG_ANSWER.YES) {
    dispatch(doWork());
  }
}
А что вам мешало просто подписаться на onHidden, как это описано в документации, и не надо никуда ничего заворачивать.

Вы вообще это свое творение собирали? Оно будет ругаться на использование приватных полей в шаблоне.
Да и приватные @Input это оксюморон.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории