ExtJS setTimeout循环函数不工作(失去作用域)Ext.bind



我有一个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作用域,而不是控制器作用域,因此更改两者都解决了问题-

最新更新