我的Node JS应用中有一个奇怪的情况。
调用overrideAndStart()
将设置变量forceOverride
。
稍后调用checkToStartStop()
时,它将使用该变量。
如果您在下面查看我的代码,如果我在行THIS LINE HERE 1111
上注释掉,则行forceOverride
上的变量2222
的日志为false
,应为{{ 1}}。如果我将日志行true
留在其中,则行1111
处的变量是正确的2222
。
很明显,我可以保留该日志行,并且我的代码可以正常工作,但是我一直在努力了解此处发生的情况以及为什么在比较之前记录变量使它具有正确的值。
true
----编辑-日志功能----
var forceOverride = false;
function overrideAndStart(enable) {
log('overrideAndStart:' + enable);
if (enable === 'true') {
forceOverride = true;
start(function(result){});
} else {
forceOverride = false;
stop(function(result){});
}
};
exports.overrideAndStart = overrideAndStart;
function checkToStartStop(returnFunction) {
eespvo.getSomeData(function(result, error) {
if (error) {
returnFunction(new Result(null, null, error));
} else {
log(result);
if (result['exporting'] === true) {
exporting(result['net'], returnFunction);
} else {
importing(result['net'], returnFunction);
}
}
});
};
exports.checkToStartStop = checkToStartStop;
var importing = function(rateW, returnFunction) {
log('importing - forceOverride===' + forceOverride); // <-- THIS LINE HERE 1111
areWeCharging(function(charging, error) {
if (error) {
lastResult = new Result(null, null, error);
returnFunction(lastResult);
} else {
log('importing - forceOverride=' + forceOverride); // <-- THIS LINE HERE 2222
if (charging === true) {
...
} else {
...
}
}
});
};