Событие JS срабатывает каждую секунду, но выполните действие внутри один раз - PullRequest
0 голосов
/ 14 августа 2011
var StreamFlash = "";

function Refresh() {
    if (EVENTDATA.events[RefreshEventsCurrentID].data.StreamFlash) {
        if (StreamFlash == "") {
            $('td.playercontainer').html(EVENTDATA.events[RefreshEventsCurrentID].data.StreamFlash);
            StreamFlash = EVENTDATA.events[RefreshEventsCurrentID].data.StreamFlash;
        }
        if (StreamFlash != EVENTDATA.events[RefreshEventsCurrentID].data.StreamFlash) {
            console.log('Load');
            $('td.playercontainer').html(EVENTDATA.events[RefreshEventsCurrentID].data.StreamFlash);
            StreamFlash = EVENTDATA.events[RefreshEventsCurrentID].data.StreamFlash;
        }
    }
    setTimeout(Refresh, 1000);
}

Функция Refresh (); запускается каждую секунду, это проверяет переменную EVENTDATA (json) на предмет изменений в объекте flash stream. Когда объект stream изменяется, он должен загружать его один раз, а не каждую секунду.
Как я понимаю это правильно ??

1 Ответ

0 голосов
/ 14 августа 2011

На самом деле ваш код должен работать: проверка того, отличается ли StreamFlash от новых данных в EVENTDATA, должна запускаться только при изменении данных.

Я бы немного упростил код, но если это все еще не работает, попробуйте зарегистрировать данные StreamFlash в EVENTDATA, чтобы увидеть, действительно ли они изменились.

var StreamFlash = "";

function Refresh() {
    var remoteStreamFlash = EVENTDATA.events[RefreshEventsCurrentID].data.StreamFlash;
    if (remoteStreamFlash && StreamFlash != remoteStreamFlash) {
        $('td.playercontainer').html(remoteStreamFlash);
        StreamFlash = remoteStreamFlash;
    }
    setTimeout(Refresh, 1000);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...