@Vladimir185

Зачем тут коллбэк?

Всем привет! Есть такой код, выводит уведомление по какому-то действию, потом его скрывает и очищает timeout. В целом всё ясно, но есть 2 вопроса

<template>
  <div class="notification" v-if="notificationMessage">
    {{ notificationMessage }}
  </div>
</template>

<script>
const delay = (fn, n) => {
  const id = setTimeout(() => fn(), n);
  return () => clearTimeout(id);
};
export default {
  data() {
    return {
      notificationDispose: null,
      notificationMessage: null,
    };
  },
  methods: {
    showNotification() {
      this.notificationMessage = "Скопировано в буфер";
      this.notificationDispose && this.notificationDispose();
      this.notificationDispose = delay(() => (this.notificationMessage = null), 2000);
    },
  },
};
</script>


1) Зачем в функции delay возвращается коллбэк, а не просто clearTimeout?
2) Как понять запись
this.notificationDispose && this.notificationDispose();

В целом понятно, но глубоко нет

P.S. где можно почитать подробнее об этом?
  • Вопрос задан
  • 97 просмотров
Пригласить эксперта
Ответы на вопрос 1
@risejs
1) Из-за пункта 2, чтобы не множить setTimeout-ы.
2) if (this.notificationDispose) this.notificationDispose();
Ответ написан
Ваш ответ на вопрос

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

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