我有一个在setTimeout上递归调用自身的函数。问题是它在这个过程中失去了它的范围。
所以这就是我的......
var module = function () {
function init() {
if (notYetReadySoTryAgain) {
setTimeout(this.init,100);
return
}
}
}
第二次通过我得到一个无法找到init的错误(在Window对象上)。
在setTimeout中处理维护模块引用的规范方法是什么?
答案 0 :(得分:1)
使用自我执行封闭范围;同时删除this
。
var module = function () {
(function init() {
if (notYetReadySoTryAgain) {
setTimeout(init,100);
return
}
})(notYetReadySoTryAgain);
}
答案 1 :(得分:0)
删除this.
,它会起作用。
var module = function () {
function init() {
if (notYetReadySoTryAgain) {
setTimeout(init,100);
return
}
}
}
使用setInterval
也可以选择。
答案 2 :(得分:0)
试试这个:
var module = (function () {
(function init() {
if (notYetReadySoTryAgain) {
setTimeout(init,100);
return
}
})()
})()