标识JavaScript同步执行块
找不到任何关于这个的讨论。在JavaScript中,是否有方法检测我在同一执行块中运行不同的函数,或者我已经在当前执行块中执行了我的函数 基本上,我需要优化一些浏览器代码,避免它在同一个同步块中运行两次。现在我是这样做的:标识JavaScript同步执行块,javascript,browser,Javascript,Browser,找不到任何关于这个的讨论。在JavaScript中,是否有方法检测我在同一执行块中运行不同的函数,或者我已经在当前执行块中执行了我的函数 基本上,我需要优化一些浏览器代码,避免它在同一个同步块中运行两次。现在我是这样做的: var isSaved = false; function saveUIState() { if(isSaved === true) { return; } // Some heavy DOM processing ...
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;
...
}
你可能想研究中介模式,我认为这会在这种情况下对你有所帮助。订阅呼叫和注册事件。