Задать вопрос

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

Здравствуйте
Использую для вывода блоков с новостями данное 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, происходит накладывание обработчиков. Подскажите, как решить данную проблему?
  • Вопрос задан
  • 80 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Попробуйте инициализировать только один раз API.
Перед api.startBlocks() поставьте какое-то условие (из API), которе проверяет: инициализировано это API или нет.

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

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

Похожие вопросы