找不到任何关于此的讨论。在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;
...
}