function load_result()
{
    $.getJSON( "http://somesite.com/loadresult.php", function(data) {
        if( data == undefined || data == null )
        {
            console.log( "no data" );
            clearTimeout( lr_timeout );
            lr_timeout = setTimeout( "load_result()", 2000 );
            return;
        }
        insert_result_price( data );
        clearTimeout( lr_timeout );
        lr_timeout = setTimeout( "load_result()", 50 * ( Math.random() * 10 ) );

    } );
}

lr_timeout是全局定义并load_result功能最初踢掉在document.ready功能。问题是,该函数并不总是运行。我会在Firebug看它,我有一个对一个的setInterval永远奏效设置其他功能。

想法?

有帮助吗?

解决方案

是其他setTimeout功能(就是那个总是工作)也是一个$.getJSON里面?如果是这样,那么它称之为同一URL(在你的榜样http://somesite.com/loadresult.php,但我敢肯定它在现实生活中不同)?

这有可能是http://somesite.com/loadresult.php是片状的资源,和你不一致的结果到资源,不setTimeout到期。当然,如果他们使用同样的资源都,那么就可能不会是问题。

其他提示

我从来没有经历过的setTimeout问题一般,没有它曾经有一个问题我已经使用了主/无限循环的JS好几次。我可以想象clearTimeout从load_results的一个调用上的setTimeout从另一个加强,特别是因为它在回应可能需要更长的时间比它采用浏览器来解决下一个setTimeout的GET请求。实际上有多个线程会在这里,你只需要在他们身上没有控制,没有可用的同步机制。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top