防止浏览器JavaScript页面刷新中的竞争条件

时间:2011-07-28 14:35:40

标签: javascript internet-explorer

我的网页具有自动刷新功能。使用计时器实现自动刷新。

GInterValId = window.setInterval("AutoRefresh()",interval);

用户还可以通过单击页面上的某些按钮来执行某些操作。自动刷新功能和用户操作正在创建竞争条件。

我想阻止两个操作(自动刷新和按钮操作)同时发生。

我该怎么做?

2 个答案:

答案 0 :(得分:3)

怎么样:

busy = false;

function AutoRefresh() {
    if( busy ) return;
    busy = true;
    ...
    ...
    ...
    busy = false;
}

function ButtonOperation() {
    if( busy ) return;
    busy = true;
    ...
    ...
    ...
    busy = false;
}

答案 1 :(得分:0)

我认为你真正想要发生的是在页面自动刷新之前完成按钮操作。在这种情况下,我会让您的按钮操作函数将操作添加到队列中,然后让AutoRefresh函数在执行刷新之前运行操作。