echart加载历史曲线图并实时刷新

echart用以下方式,查看图表时,即使程序运行很久了,也看不到历史曲线。原因是从打开时才刷新页面,获取数据更新。
想到的方式是,打开趋势图时,将历史数据加载出来,再实时更新数据。但不知道怎样修改这个需求?


<div id="Apple" style="width:auto;height:400px;margin:2% auto;">
    图标加载中...
</div>
<script>
    var dom = document.getElementById("Apple");
    var myChart3 = echarts.init(dom);
    var app = {};
    option = null;
    var data3 = [];
    var now = new Date();
    //myChart.showLoading({
    //                        text: '疯狂计算中',
    //                        effect: 'whirling'
    //                    });

    option = {
        title: {
            text: '[Apple]'
        },
        visualMap: [{
            top: 10,
            right: 10,
            show: false,
            precision: 1,
            seriesIndex: 0,
            pieces: [{
                gt: 1000, // 设置最小值
                lte: 1500, // 设置最大值
                color: '#33CC33'
            }],
            outOfRange: {
                color: '#CC3300' // 设置超出部分的颜色
            }
        },
        ],
        tooltip: {
            trigger: 'axis',
            formatter: function (params) {
                params = params[0];
                var date = new Date(params.name);
                return date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear() + ' : ' + params.value[1];
            },
            axisPointer: {
                animation: false
            }
        },
        toolbox: {
            show: true,
            feature: {
                //mark : {show: true},
                //dataZoom : {show: true},
                //magicType : {show: true, type: ['line', 'bar', 'stack', 'tiled']},
                magicType: { show: true, type: ['line', 'bar'] },
                dataView: { show: true },
                //restore : {show: true},
                saveAsImage: { show: true }
            }
        },
            dataZoom: [{                 // 内置于坐标系中,使用户可以在坐标系上通过鼠标拖拽、鼠标滚轮、手指滑动(触屏上)来缩放或漫游坐标系 
            type: 'inside',
            start: 0,
            end: 100
        }, {
            start: 0,
            end: 100,                  // handleIcon 手柄的 icon 形状,支持路径字符串
            handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
            handleSize: '80%',        //  控制手柄的尺寸,可以是像素大小,也可以是相对于 dataZoom 组件宽度的百分比,默认跟 dataZoom 宽度相同。
            handleStyle: {
                color: 'pink',
                shadowBlur: 3,      // shadowBlur图片阴影模糊值,shadowColor阴影的颜色
                shadowColor: 'red',
                shadowOffsetX: 2,
                shadowOffsetY: 2
            }
        }],
        xAxis: {
            type: 'time',
            splitLine: {
                show: false
            }
        },
        yAxis: {
            type: 'value',
            boundaryGap: [0, '100%'],
            splitLine: {
                show: false
            }
        },
        series: [{
            name: '模拟数据',
            type: 'line',
            showSymbol: false,
            hoverAnimation: false,
            data: data3,
            smooth: true,  // 开启平滑处理。true的平滑程度相当于0.5
            symbol: 'none', // 标记的图形。
            sampling: 'average', //  取过滤点的平均值
            itemStyle: {
                normal: {
                    color: 'rgb(255, 70, 131)' //  图形的颜色。
                }
            },
            areaStyle: {    // 区域填充样式。
                normal: {
                    color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                        offset: 0,
                        color: 'rgb(255, 158, 68)'
                    }, {
                        offset: 1,
                        color: 'rgb(255, 70, 131)'
                    }])
                }
            },
             markLine: {
                itemStyle: {
                    normal: {
                        borderWidth: 1,
                        lineStyle: {
                            type: "dash",
                            color: 'red',
                            width: 2
                        },
                        label: {
                            formatter: 'SP',
                            textStyle: {
                                fontSize: 16,
                                fontWeight: "bolder"
                            }
                        },
                        show: true,
                        color: '#4c5336'
                    }
                },
                data: [{
                    yAxis: 200
                }]
            }
        }]
    };

     var AppleValue=0;
       function GetAppleData() {
        now = new Date(+now + 1000);
        var selectItem = $("#ulList .nav-item").find(".active").text();
        $.ajax({
            url: "/Controls/GetAppleData/",          
            type: "GET",
            //dataType: 'json',
            success: function (res) {                
                AppleValue = res.data;
                console.info(res);
            },
            error: function (err) {
                console.log(err.responseText);
                // alert(err.responseText);
            }
        });

        return {
            name: now.toString(),
            value: [
                now,
                Math.round(AppleValue)
            ]
        }
    }
    setInterval(function () {
        //data.shift();
        data3.push(GetAppleData());
        var upRange = parseFloat($("#TrendUpRang").val());
        var lowRange = parseFloat($("#TrendLowRang").val());
        myChart3.setOption({           
            visualMap:{
            top: 10,
            right: 10,
            show: false,
            precision: 1,
            seriesIndex: 0,
            pieces: [{
                    gt: lowRange, // 设置最小值
                    lte: upRange, // 设置最大值
                color: '#33CC33'
            }],
            outOfRange: {
                color: '#CC3300' // 设置超出部分的颜色
            } 
          },
            series: [{
                data: data3
            }]
        }, false);
    }, 1000);
    if (option && typeof option === "object") {
        myChart3.setOption(option, false);
    }
        //window.addEventListener('resize', function () {
        //    myChart.resize();
        //})

</script>

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^