Javascript HighStock中Set极值和Afterextremes之间的差异

Javascript HighStock中Set极值和Afterextremes之间的差异,javascript,charts,highcharts,Javascript,Charts,Highcharts,我是Highchart的新手,我有一个关于setExtremes和afterextremes的问题,我不确定我是否理解它们之间的区别 下面是一个senario: 在setextremscallback函数中有一个从服务器检索json数据的函数。我将使用setextrems(比如2015-01-01到2015-05-01)预先设置图表范围,这样每次设置图表范围后,都会调用此函数从服务器获取新数据,但从服务器获取的数据可能具有不同的日期范围(比如2015-03-01到2015-05-04)。我想根据

我是Highchart的新手,我有一个关于
setExtremes
afterextremes
的问题,我不确定我是否理解它们之间的区别

下面是一个senario: 在
setextrems
callback函数中有一个从服务器检索json数据的函数。我将使用
setextrems
(比如2015-01-01到2015-05-01)预先设置图表范围,这样每次设置图表范围后,都会调用此函数从服务器获取新数据,但从服务器获取的数据可能具有不同的日期范围(比如2015-03-01到2015-05-04)。我想根据数据中的新范围调整图表范围。但是如果我在
setextrems
回调函数中再次使用
setextrems
,将出现无限循环

此事件在计算最终最小值和最大值后激发


所以我想这可以解决我的问题,但我不确定具体是如何解决的?

区别如API参考中所述:
setExtremes
可以用不可接受的范围调用-在
afterSetExtremes
范围被纠正后

在将值发送到原始
setextrems
函数之前,您可以扩展Highcharts以更改最小值和最大值。Highcharts的延迟加载演示使用数据的动态加载,所以让我们向该JSFIDLE添加包装器

例如:

在这种情况下,范围开始(newMin)将更改为原始范围的一半。您可以在包装器中加载数据,检查其极端值,将更改后的值传递给原始方法

(function (H) {
    H.wrap(H.Axis.prototype, 'setExtremes', function (proceed) {
        var newMin = arguments[1],
            newMax = arguments[2];

        arguments[1] = (newMin+newMax)/2;

        // Run original proceed method
        proceed.apply(this, [].slice.call(arguments, 1));
    });
}(Highcharts));