$.post (ajaxUrl, {action:'get_seconds_to_next_cron'}, function (data) {
countdown = data + 600; //is this in global scope now?
setInterval('updateClock();',1000 );
},'json');
function updateClock() {
countdown--;
console.log(countdown); //output for verification
}
您好[首次发生stackoverflow问题]以上是与我们的服务器时间和cron作业相关联的购物车上的计时器的解决方案。
我担心倒计时会成为全局命名空间的一部分,因此不是最佳实践等。
下面是一些测试代码,试图以不同的方式设置事物(就可能)在范围方面做一个更清洁的工作。
var myWrapper = {
count: 600,
passCount : 'myWrapper.myCount(' +this.count+ ')',
myCount: function() {
this.count--;
console.log(this.count); //output for verification
},
setCounter: function() {
setInterval(this.passCount, 1000);
}
};
myWrapper.setCounter();
我对范围的理解充其量只是中间因素,所以任何反馈都会很有趣,并且可能对我的理解有所帮助。
感谢。
答案 0 :(得分:3)
您可以将updateClock()
转变为anonymous function countdown
的{{3}}:
$.post(ajaxUrl, { action: 'get_seconds_to_next_cron' }, function(data) {
var countdown = data + 600; // This doesn't need to be global.
window.setInterval(function() {
countdown--; // Refers to the outer `countdown` variable.
console.log(countdown);
}, 1000);
}, 'json');