JS事件每秒触发一次,但在内部执行一次

时间:2011-08-14 15:40:50

标签: javascript json timing

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流对象的变化,当streamobject被更改时,它必须加载一次,而不是每秒加载一次。
我怎么做到这一点?

1 个答案:

答案 0 :(得分:0)

实际上您的代码应该有效:测试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);
}