标识JavaScript同步执行块

标识JavaScript同步执行块,javascript,browser,Javascript,Browser,找不到任何关于这个的讨论。在JavaScript中,是否有方法检测我在同一执行块中运行不同的函数,或者我已经在当前执行块中执行了我的函数 基本上,我需要优化一些浏览器代码,避免它在同一个同步块中运行两次。现在我是这样做的: var isSaved = false; function saveUIState() { if(isSaved === true) { return; } // Some heavy DOM processing ...

找不到任何关于这个的讨论。在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);
}
但是我不能保证我的标志在下一个执行块之前被重置

虽然node的
进程.nextTick
更合适,但我更喜欢寻找一种类似于识别执行块的方法:

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

你可能想研究中介模式,我认为这会在这种情况下对你有所帮助。订阅呼叫和注册事件。