使用AJAX定期加载CSV

时间:2017-01-10 21:57:37

标签: javascript jquery ajax csv google-maps-api-3

我正在尝试每隔5秒加载多个CSV文件,以更新Google Maps API v3中的某些显示,但只加载一个或两个,而不是所有文件。

以下是代码:

setInterval(function() {
        checkLaneStatus();
        initMap();
    }, 2000);


    function checkLaneStatus(){
        laneStatus('landing_lane.csv',landing_lane);

        laneStatus('landing_curve.csv',landing_curve);  

        laneStatus('arrival_lane_1.csv',arrival_lane_1);    
        laneStatus('arrival_lane_2.csv',arrival_lane_2);    
        laneStatus('arrival_lane_3.csv',arrival_lane_3);    
        laneStatus('arrival_lane_4.csv',arrival_lane_4);    

        laneStatus('t1.csv',terminal1); 
        laneStatus('t2.csv',terminal2); 
        laneStatus('t3.csv',terminal3); 
        laneStatus('t4.csv',terminal4); 

        laneStatus('departure_lane_1.csv',departure_lane_1);
        laneStatus('departure_lane_2.csv',departure_lane_2);    
        laneStatus('departure_lane_3.csv',departure_lane_3);    
        laneStatus('departure_lane_4.csv',departure_lane_4);    

        laneStatus('departure_curve.csv',departure_curve);

        laneStatus('departure_lane.csv',departure_lane);
    }

    function laneStatus(file,lane){
        var temp = lane;
        $.ajax({
            type: "GET",
            url: file,
            dataType: "text",
            success: function(data) {processData(data);}
        });
        function processData(allText) {
            console.log(allText);
            var allTextLines = allText.split(/\r\n|\n/);
            var entries = allTextLines[0].split(',');
            if(entries[2] != -1){
                temp.setOptions({strokeColor: colorRed, fillColor: colorRed});
            }
        }
    }

CSV文件示例(id,name,status):如果状态为-1表示该通道是空闲的,任何其他数字表示正忙。

1,'Departure Lane 1',-1

假设的行为是:加载相同的csv并更新显示颜色,因此应检查所有csv以检测更改。但是它每个间隔只加载一个csv,所以只更新了“lane”。

laneStatus函数接收位于根目录中的csv的位置(执行代码的index.html的相同文件夹)。 “lane”参数是google.maps.Rectangle对象。

我想我解释得很好,不胜感激任何回复!

谢谢!

1 个答案:

答案 0 :(得分:0)

您可能会达到浏览器最大同时请求限制。因为你无法控制你的最终用户浏览器配置如何实现一个简单的队列,它只是先出数组中的第一个。将每个请求添加到队列,并有第二个间隔,每隔500毫秒左右创建一个请求,直到队列为空。

如果您控制数据,您可以将一些文件与另一列合并,以确定它对应的通道吗?或者甚至编写一个组合它们的简单中间件层,它会加快页面的速度,因为它只需要打开一个连接。

我还喜欢使用Web套接字(socket.io),如果您要提取数据,因为它会在请求之间保持持久连接。