@stollyar

Как отложить запрос к апи во время кликов на кнопку?

Есть обычный счетчик товара в корзине. Сейчас я сделал так, что пока первый запрос по клику на + или - не отработает, то еще раз кликнуть нельзя.
Но я бы хотел, чтобы пользователь "прокликал" столько, сколько ему нужно, а запрос улетел только на последнем клике.
Как это можно реализовать?

let p = new Promise(resolve => {
    const updateProduct =  BX.ajax.runComponentAction('test:basket', 'updateItemById', {
      mode: 'ajax',
      data: {
        id,
        fields
      }
    });
    disabledInputs() // вешаю на инпут аттрибут disabled
    updateProduct.then(response => resolve(response.status));
  })
  p.then(result => {
    if (result) {
      undisabledInputs() // удаляю disabled
      }
    })
  • Вопрос задан
  • 93 просмотра
Решения вопроса 1
Stalker_RED
@Stalker_RED
throttle / debounce

Что это вообще такое?
Троттлинг функции означает, что функция вызывается не более одного раза в указанный период времени (например, раз в 10 секунд). Другими словами ― троттлинг предотвращает запуск функции, если она уже запускалась недавно. Троттлинг также обеспечивает регулярность выполнение функции с заданной периодичностью.

Debouncing функции означает, что все вызовы будут игнорироваться до тех пор, пока они не прекратятся на определённый период времени. Только после этого функция будет вызвана. Например, если мы установим таймер на 2 секунды, а функция вызывается 10 раз с интервалом в одну секунду, то фактический вызов произойдёт только спустя 2 секунды после крайнего (десятого) обращения к функции.

https://www.google.com/search?q=js+throttle+debounce
https://medium.com/nuances-of-programming/%D1%87%D...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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