Как удалить предыдущий обработчик и наложить новый?

Здравствуйте
Использую для вывода блоков с новостями данное api - https://developer.nytimes.com/

Есть поле, где вводиться текст, по которому выводиться соотв. новость.

function showBlocks(){
 api.startBlocks()
    .then((block) => {
      new Blocks(container, block);
    }).catch(err => {   
      return Promise.reject(`Error: ${err.status}`);
    });
}


form.addEventListener('submit', () => {
  showBlocks();
});


Проблема заключается в следующем, при повторном запросе, происходит вывод не 2 блоков (вывод по 2 блока, + кнопка More blocks), а кол-во блоков умноженное на кол-во нажатий на кнопку (запросов), при этом после перезагрузки все работает ок.
Как я понимаю при создании экземпляра класса new Blocks, происходит накладывание обработчиков. Подскажите, как решить данную проблему?
  • Вопрос задан
  • 79 просмотров
Решения вопроса 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Попробуйте инициализировать только один раз API.
Перед api.startBlocks() поставьте какое-то условие (из API), которе проверяет: инициализировано это API или нет.

Или вынесите инициализацию во вне из функции клика.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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