除非我记录下来,否则变量不会更新

时间:2018-11-07 09:55:05

标签: javascript node.js

我的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 {
                ...
            }
        }
    });
};

0 个答案:

没有答案