我有一个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);
答案 0 :(得分:1)
解决方案是将setTimeout
次调用更改为:
setTimeout(Ext.bind(me.checkDownloadComplete, me), 200);
问题是,在setTimeout
的第一次调用中,checkDownloadComplete
范围已更改为setTimeout
范围而非控制器范围,因此更改两者都解决了问题 -