Javascript 加载前事件中的超时

Javascript 加载前事件中的超时,javascript,jquery,extjs,asynchronous,load,Javascript,Jquery,Extjs,Asynchronous,Load,我正在尝试编写一些ExtJS4脚本。我有以下代码: var companyStoreModel = Ext.create('Ext.data.Store', { model: 'CompanyDataModel', proxy: { type: 'ajax', url: _company_load_url, reader: 'json', }, listener

我正在尝试编写一些ExtJS4脚本。我有以下代码:

var companyStoreModel = Ext.create('Ext.data.Store', {
        model: 'CompanyDataModel',
        proxy: {
            type: 'ajax',
            url: _company_load_url,
            reader: 'json',
        },
        listeners: {
            beforeload: function(store, options) {
                            loadFunction(0);
                        },
            load: function(store, records, options) {
                      $('section#test').html('test: data loaded');
                  },
        },
        autoLoad: true,
    });
在剧本的开头,我有:

var _timeout;
var loadFunction = function(no)
{
    $('section#test').html('test: is loading');
    for (var i = 0; i<no; i++)
    {
        $('section#test').append('.');
    }
    _timeout = setTimeout(loadFunction(no++), 100);
}

被称为。错误是:
超过了最大调用堆栈大小
。有人能给我一个提示如何做这样的事情或者我做错了什么吗?

加载数据时,您必须
清除超时时间

        load: function(store, records, options) {
                  $('section#test').html('test: data loaded');
                  clearTimeout(_timeout);
              },

现在,您的函数正在直接执行(导致执行的调用堆栈很大)。您不能像这样将其放入
setTimeout
函数中。您可以只传递函数名(可以求值的代码),也可以使用匿名函数:

姓名:

评估:

Anon.func

_timeout = setTimeout(function() {
    loadFunction(no++);
}, 100);

我忘记了clearTimeout,但这不是重点。没有任何影响,在你的情况下,加载永远不会停止。它起作用了!这很有趣,似乎我的javascript知识还很低。:)非常感谢。
// You will need to put no in the global scope for this.
_timeout = setTimeout(loadFunction, 100); 
_timeout = setTimeout("loadFunction("+no+")", 100); 
_timeout = setTimeout(function() {
    loadFunction(no++);
}, 100);