Javascript Heavy Scripting Load(滞后网站)

时间:2016-12-09 03:49:22

标签: javascript asp.net highcharts lag

我有一个运行在javascript 1.7.1上的网站,每当我点击一个运行Javascript方法的按钮时,网页加载变得更加沉重,并且持续运行javascript直到网站开始滞后。这里是我的JS方法的一个例子:

 function makeGraph() {

        var cityValue = [];
        var cityValue2 = [];
        var cityName = [];
        var numIndex = [];
        var tDelivery = [];
        var tIdle = [];
        var tRepair = [];
        var tReady = [];
        var barColor = "";
        var cityString = "";
        var chrt = document.getElementById("myCanvas");
        var cityList = [];
        cityList = arguments;

        $.ajax({
            url: '../api/values',
            type: 'GET',
            datatype: 'json',
            success: function (data) {

                for (var j = 1; j < cityList.length; j++)
                {
                    cityString = cityString + "||" + " data[i].Names==\"" + cityList[j] + "\"";
                }    
                cityString = "data[i].Names==\"" + cityList[0] + "\""+cityString;
                for (var i = 0; i < data.length; i++) {
                    if (eval(cityString)) {
                        numIndex.push(i);
                    }

                }
                for (var k = 0; k < numIndex.length; k++) {
                    cityValue.push(data[numIndex[k]].ValuesDouble);
                    cityValue2.push(data[numIndex[k]].ValuesDouble2);
                    cityName.push(data[numIndex[k]].Names);
                    tDelivery.push(data[numIndex[k]].truckDelivery);
                    tIdle.push(data[numIndex[k]].truckIdle);
                    tRepair.push(data[numIndex[k]].truckRepair);
                    tReady.push(data[numIndex[k]].truckReady);
                }
                if (numIndex.length > 0) {
                    for (var h = 0; h < numIndex.length - 1; h++) {
                        barColor = barColor + "{y:" + cityValue2[h] + ",color:'" + setGraphColor(cityValue2[h], cityValue[h]) + "'}" + ",";
                    }
                    barColor = "[" + barColor + "{y:" + cityValue2[numIndex.length-1] + ",color:'" + setGraphColor(cityValue2[numIndex.length-1],cityValue[numIndex.length-1]) + "'}" + "]";
                }
                else {
                    barColor = "[" + barColor + "{y:" + data[numIndex[0]].ValuesDouble2 + ",color:'" + setGraphColor(data[numIndex[0]].ValuesDouble2, data[numIndex[0]].ValuesDouble) + "'}" + "]";
                }

                $(function () {
                    Highcharts.chart('container', {
                        chart: {
                            type: 'column',
                            backgroundColor: 'black'
                        },
                        tooltip: {
                            formatter: function () {
                                var s = '<b>' + this.x + '</b><br/><div>__________________________</div><hr>';

                                $.each(this.points, function () {
                                    s += '<br/><span style="color:' + this.series.color + '">\u25CF</span><b>' + this.series.name + '</b>: ' + this.y;
                                });

                                return s;
                            },
                            shared: true
                        },
                        title: {
                            text: ''
                        },
                        xAxis: {
                            categories: cityName,

                        },
                        yAxis: {
                            min: 0,
                            tickInterval: 500,
                            title: {
                                text: ''
                            }
                        },
                        legend: {
                            verticalAlign: 'top',
                            reversed: false,
                            backgroundColor: 'lightgrey'
                        },
                        plotOptions: {
                            series: {
                                stacking: 'normal'
                            }
                        },
                        series: [{
                            name: 'Daily Schedule',
                            data: eval(barColor)
                        },
                       {
                           name: 'Actual Delivery',
                           data: cityValue,
                           color: '#33FF66'
                       },
                       {
                           name: '0%-69%',
                           //data: cityValue,
                           color: '#FF3366'
                       },
                        {
                            name: '70%-89%',
                           // data: cityValue,
                            color: '#FFCC33'
                        },
                       {
                           name: '90%-100%',
                          // data: cityValue,
                           color: '#003DF5'
                       }]
                    });
                });

                //////////////GRAPH 2 INFLUENCE///////////
                $(function () {
                    Highcharts.chart('container2', {
                        chart: {
                            type: 'column',
                            backgroundColor: 'black'
                        },
                        tooltip: {
                            formatter: function () {
                                var s = '<b>' + this.x + '</b><br/><div>__________________________</div><hr>';

                                $.each(this.points, function () {
                                    s += '<br/><span style="color:' + this.series.color + '">\u25CF</span><b>' + this.series.name + '</b>: ' + this.y;
                                });

                                return s;
                            },
                            shared: true
                        },
                        title: {
                            text: ''
                        },
                        xAxis: {
                            categories: cityName,

                        },
                        yAxis: {
                            min: 0,
                            max:80,
                            tickInterval: 20,
                            title: {
                                text: ''
                            }
                        },
                        legend: {
                            verticalAlign: 'top',
                            reversed: false,
                            backgroundColor: 'lightgrey'
                        },
                        plotOptions: {
                            series: {
                                stacking: 'normal'
                            }
                        },
                        series: [
                        {
                            name: 'Truck Delivery',
                            data: tDelivery,
                            color: '#33FF66'

                        },
                         {
                             name: 'Truck Idle',
                             data: tIdle,
                             color: '#FFCC33'
                         },
                         {
                             name: 'Truck Repair',
                             data: tRepair,
                             color: '#FF3366'
                         },
                        {
                            name: 'Truck Ready',
                            data: tReady,
                            color: '#003DF5'
                        }]
                    });
                });

                //////////////GRAPH 3 INFLUENCE///////////
                $(function () {
                    Highcharts.chart('container3', {
                        chart: {
                            type: 'column',
                            backgroundColor: 'black'
                        },
                        tooltip: {
                            formatter: function () {
                                var s = '<b>' + this.x + '</b><br/><div>__________________________</div><hr>';

                                $.each(this.points, function () {
                                    s += '<br/><span style="color:' + this.series.color + '">\u25CF</span><b>' + this.series.name + '</b>: ' + this.y;
                                });

                                return s;
                            },
                            shared: true
                        },
                        title: {
                            text: ''
                        },
                        xAxis: {
                            categories: cityName,

                        },
                        yAxis: {
                            min: 0,
                            tickInterval: 500,
                            title: {
                                text: ''
                            }
                        },
                        legend: {
                            verticalAlign: 'top',
                            reversed: false,
                            backgroundColor: 'lightgrey'
                        },
                        plotOptions: {
                            series: {
                                stacking: 'normal'
                            }
                        },
                        series: [
                        {
                            name: 'Staff On Duty',
                            data: cityValue,
                            color: '#33FF66'

                        },
                         {
                             name: 'Staff Present',
                             data: cityValue,
                             color: '#003DF5'
                         },
                        {
                            name: 'Staff Absent',
                            data: cityValue,
                            color: '#FF3366'
                        }]
                    });
                });

            }
        })

    }

我还在IE 11中运行了一个开发人员工具,它向我展示它确实来自不间断的javascript循环。我想知道是否有人可以帮助我停止JS循环以使其不连续。(我也使用SignalR,我不知道这是否是其中一个因素。)谢谢。

这些是标题标记:

<meta name="viewport" content="width=device-width" />
<script src="Scripts/jquery-1.7.1.min.js"></script>
<script src="Scripts/jquery.signalR-2.2.1.min.js"></script>
<script src="Scripts/highcharts/4.2.0/highcharts.js"></script>
<script src="Scripts/Chart.min.js"></script>
<script src="Scripts/Chart.js"></script>
<script src="/signalr/hubs" type="text/javascript"></script>
<script type="text/javascript">

是的,我在这个函数中使用了highchart.js,按钮是这样的,所以我可以根据我点击的按钮刷新和排序图形,在这些情况下是城市的类别。

0 个答案:

没有答案