Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery、AJAX和HTML5画布的Firefox内存泄漏_Javascript_Ajax_Jquery_Memory Leaks - Fatal编程技术网

Javascript 使用jQuery、AJAX和HTML5画布的Firefox内存泄漏

Javascript 使用jQuery、AJAX和HTML5画布的Firefox内存泄漏,javascript,ajax,jquery,memory-leaks,Javascript,Ajax,Jquery,Memory Leaks,我使用jQuery的ajax函数轮询我的服务器,然后使用该数据更新画布。我每秒轮询服务器一次(这不是使用setInterval()完成的,如果您想知道的话……我确实听说这有时是这些问题的根源。画布是动画的,我跟踪帧速率。我使用这些数据来计算一秒钟的时间)。这在Chrome中不是问题,但在Firefox和Maxthon云(以及程度要小得多的Opera)中,性能逐渐变得越来越差。我认为这是ajax调用的问题,我不知道如何解决这个问题。这是我的“callServer()”函数,如果有用的话。谢谢 fu

我使用jQuery的ajax函数轮询我的服务器,然后使用该数据更新画布。我每秒轮询服务器一次(这不是使用setInterval()完成的,如果您想知道的话……我确实听说这有时是这些问题的根源。画布是动画的,我跟踪帧速率。我使用这些数据来计算一秒钟的时间)。这在Chrome中不是问题,但在Firefox和Maxthon云(以及程度要小得多的Opera)中,性能逐渐变得越来越差。我认为这是ajax调用的问题,我不知道如何解决这个问题。这是我的“callServer()”函数,如果有用的话。谢谢

function callServer(action, json)
{
    if(!json)
    {
        $.ajax({
            type: 'POST',
            url: 'okey.php.',
            data: 'action=' + action,
            cache: false,
            success: function(data)
            {
                switch(action)
                {
                    case 'ptv':
                        tilesValue = data;
                        break;
                    case 'ptc':
                        tilesColor = data;
                        break;
                    case 'tid':
                        //alert(data);
                        thisPlayerID = data;
                        break;
                    case 'pti':
                        playerTurnInfo = data;
                        //alert(data);
                        break;
                    case 'gs':
                        gameStatus = data;
                        break;
                    case 'steal':
                        alert(data);
                        break;
                    case 'draw':
                        alert(data);
                        break;
                    case 'testing':
                        alert(data);
                        break;
                }
            }
        });
    }
    else if(json)
    {
        $.ajax({
            type: 'POST',
            url: 'okey.php.',
            data: 'action=' + action,
            dataType: 'json',
            cache: false,
            success: function(data)
            {
                switch(action)
                {
                    case 'ptv':
                        tilesValue = data;
                        break;
                    case 'ptc':
                        tilesColor = data;
                        //alert(tilesColor.length);
                        break;
                    case 'pn':
                        playerNames = data;
                        break;
                    case 'pid':
                        playerIDs = data;
                        break;
                    case 'pts':
                        //alert("excellent");
                        turnStatuses = data;
                        break;
                    case 'ti':
                        tileIndeces = data;
                        //alert(tileIndeces.length)
                        break;
                    case 'dis':
                        //alert(parseInt(data[3]));
                        discarded = data;
                        //alert(parseInt(discarded[3]));
                        break;
                }
            }
        });
    }
}

更新:引起问题的不是调用的频率。

作为建议-您不需要
if(!json)
然后
else if(json)
-您只需将
else if(json)
设置为
else
。另外,您还必须展示如何调用此代码。$.ajax默认执行异步请求。也许firefox无法像Chrome那样快速处理请求,并继续堆积请求。请尝试将请求设置为同步,以查看其效果。顺便说一句,由于您不断地获取数据,您考虑过使用WebSocket吗?我只是说“callServer('steal',false);”此外,我尝试过同步发出请求,但这只会导致更多问题。我考虑过web套接字,但对它们不熟悉。我会尽量减少请求的频率,看看这是否有帮助。关于国际单项体育联合会,这是真的。笨重的编码只是过去有更多选择这一事实的一个痕迹。