我有一个ExtJS
4.2.1 Controller
,其中我使用setTimeout:在1秒后触发一个函数
onPrint: function () {
var me = this;
// start some stuff here...
// end some stuff here...
// wait 1 second and call checkDownloadComplete function
setTimeout(me.checkDownloadComplete, 1000);
},
checkDownloadComplete: function () {
var me = this;
// validate stuff here...
if (something == "true") {
return;
}
// first approach but didn't work (maybe because the scope)
setTimeout(me.checkDownloadComplete, 1000);
// sencond approach but didn't work
Ext.bind(function () {
setTimeout(checkDownloadComplete, 1000)
}, me)
},
我的第一次尝试是使用:
setTimeout(me.checkDownloadComplete,1000);
但这不起作用
我的第二次尝试是评论最后一行,并使用Ext.bind:
Ext.bind(funciton(){setTimeout(checkDownloadComplete,1000)},me);
知道我做错了什么吗?因为这些都不能再次调用函数本身。
感谢
更新:
我也尝试过,但没有成功:
setTimeout(Ext.bind(checkDownloadComplete,me), 1000);
解决方案是将两个setTimeout
调用都更改为:
setTimeout(Ext.bind(me.checkDownloadComplete, me), 200);
问题是,在第一次调用setTimeout
时,checkDownloadComplete
作用域被更改为setTimeout
作用域,而不是控制器作用域,因此更改两者都解决了问题-