Я пытаюсь получить обратный вызов, работающий внутри модуля, чтобы обновить свойство. В этом случае я просто хочу, чтобы он переключал значение свойства, и хотел бы видеть это снаружи.
Вот простой модуль
var Module = (function () {
// private
var isLoaded=false;
var timer = null;
var _privateMethod = function () {
console.log('hello from private')
}
//public
var publicMethod = function(){
console.log('in public method')
_privateMethod();
}
var start = function(){
console.log('starting timer')
timer = setInterval( function() {
console.log('timer callback')
isLoaded = !isLoaded;
},1000)
}
var stop = function(){
console.log('stopping timer')
clearInterval(timer)
}
return {
publicMethod: publicMethod,
isLoaded: isLoaded,
start: start,
stop: stop,
}
})();
module.exports = Module;
и я проверяю это с этим
function sleep(milliseconds) {
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds){
break;
}
}
}
var DM = require('./module.js')
DM.publicMethod()
DM.start()
console.log(DM.isLoaded)
sleep(500)
console.log(DM.isLoaded)
sleep(500)
console.log(DM.isLoaded)
sleep(500)
console.log(DM.isLoaded)
sleep(500)
DM.stop();
Он не выдает ошибку, и похоже, что он запускает таймер нормально, но я никогда не получаю вывод от обратного вызова, и свойство не обновляется. Я предполагаю, что это проблемы с областью видимости, но я не могу это понять.