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

Как реализовать интервальный вывод уведомлений в js, используя JSONP?

Добрый день, необходимо через restApi получить массив данных уведомлений, и выводить эти уведомления с определённым интервалом, показали уведомление, оно повисело секунды 3, удалили, на этом месте отобразили другое. Как только все уведомления показали, нужно подключиться к серверу и получить новую порцию уведомлений и так происходит до тех пор пока открыта вкладка в браузере. Данные находятся на другом сервере.
Реализация:
var DISPLAY_TIME = 3000;
connServer(getNotification);
var script;
function connServer(callback) {
    script = document.createElement("script");
    script.setAttribute("src", '//example.com/api/get-notifications?storeId=4327087&callback=getNotification');
    script.charset = "utf-8";
    script.setAttribute("type", "text/javascript");
    script.onreadystatechange = script.onload = callback;
    document.body.appendChild(script);
}

function getNotification(data) {
    initSP(data, 0);
}

function initSP(configSP, i) {
    if (i >= configSP.notifications.length) {
        document.body.removeChild(script);
        connServer(getNotification);
        return;
    }
    var htmlNotif = '<img src="' + configSP.notifications[i].productImg + '" class="photo">' ;

    //Вставка в вёрстку
    setTimeout(function run() {
        closeNotification();
        initSP(configSP, ++i);
    }, DISPLAY_TIME);
}

Но происходит ошибка.
9a401af3407b44fbae55ce64a8f32049.jpgКак можно улучшить реализацию и избавиться от ошибки?
  • Вопрос задан
  • 120 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Проверяйте в getNotification что у вас в переменной data, т.к. onreadystatechange во время запроса срабатывает несколько раз.

Или подправьте connServer(), примерно как здесь:
https://developer.mozilla.org/ru/docs/Web/API/XMLH...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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