我有一个具有内部循环的模块(使用'settimeout')。我想在每次计时器发生时触发一个回调。我尝试使用 jQuery 的延迟对象,但没有成功。像:
$(function(){
var module = new MyModule();
$.when(module.init()).then("DO Something");
});
function MyModule(){
this.d = $.Deferred();
}
test.prototype.init = function(){
clearTimeout(this.next);
var self = this;
/* Do Something */
self.d.resolve();
this.next = setTimeout(function(){
self.init(); /* The problem is here - internal call to self */
}, 4000);
return self.d.promise();
};
问题是计时器在内部调用该方法,所以我不会调用“.then(Do Something);” 的主程序。我可以使用老式函数回调(将回调函数传递给模块),但我真的很想尝试这些很棒的功能。
谢谢,
亚尼夫