识别JavaScript同步执行块

时间:2014-03-23 20:33:51

标签: javascript browser

找不到任何关于此的讨论。在JavaScript中,有没有办法检测我在同一个执行块中运行不同的函数,或者我已经在当前执行块中执行了我的函数?

基本上我需要优化一些浏览器代码,避免它在同一个同步块中运行两次。现在我这样做:

var isSaved = false;
function saveUIState() {
    if(isSaved === true) {
        return;
    }

    // Some heavy DOM processing
    ...

    isSaved = true;
    setTimeout(function() {
        // Reset this flag in another execution block
        isSaved = false;
    }, 0);
}

但我不能保证在下一个执行块之前重置我的标志。

虽然节点的process.nextTick更合适,但我更需要一种识别执行块的方法:

var lastExecutionBlockID;
function saveUIState() {
    if(lastExecutionBlockID === executionBlockID) {
        return;
    }
    lastExecutionBlockID = executionBlockID;
    ...
}

1 个答案:

答案 0 :(得分:0)

您可能想要研究调解员模式,我认为这将在这种情况下帮助您。订阅电话和注册活动。 Mediator.js Mediator Pattern