nickola105
@nickola105
начинающий

Почему дважды а то четырежды уходит запрос?

Всем привет.
Есть такая функция
promoAnswer() {setTimeout(() => {
                const regex = /^[A-Za-z0-9]{8}$/;
                //debugger
                if (regex.test(this.promocode)) {
                    console.log('good');
                    this.$http.post('set-promo',  {code : this.promocode },{emulateJSON: true})
                }                    
             else {
                    this.isCorrectly = false;
                    if (this.promocode.length === 0)
                        this.isCorrectly = true;
                }
            } , 2000)}

setTimeOut используется для имитации, что машина ждет продолжения ввода юзером кода, однако если он через пару минут не продолжил она выдает ему соответствующий текст. но если он ввел слово до конца, запрос уходит несколько раз. по всей видимости это зависит сколько раз он прерывался в 2 сек.
Как победить?
  • Вопрос задан
  • 277 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Удалять надо таймер, если он уже установлен. Что-то вроде
var timerId = 0;
promoAnswer() {
  if (timerId > 0) {
    clearTimeout(timerId);
  }
  timerId = setTimeout(...)
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@timokins
Посмотрите в сторону Debounce (Debouncing),
это то, что Вам нужно.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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