Javascript 在visjs完成加载图表后获取回调

Javascript 在visjs完成加载图表后获取回调,javascript,vis.js,Javascript,Vis.js,我希望在加载完图表后收到来自的回调,这样我就可以取消隐藏图表并停止加载动画。但是,我看不到在文档中注册回调 现在,我还不熟悉javascript,所以也许我没有正确地思考这个问题?希望有人能给我指出正确的方向。谢谢 我是vis.js的创建者之一 js的可视化应该同步加载,因此不需要回调。在检查了时间线和图表后,我发现情况已经不是这样了,这不是故意的行为。我在这里为这个问题打开了一个窗口: 我不知道您使用的是哪种可视化,但时间线和图形2D的一种解决方法是:同步加载可视化,并在下一个刻度上加载项目。

我希望在加载完图表后收到来自的回调,这样我就可以取消隐藏图表并停止加载动画。但是,我看不到在文档中注册回调


现在,我还不熟悉javascript,所以也许我没有正确地思考这个问题?希望有人能给我指出正确的方向。谢谢

我是vis.js的创建者之一

js的可视化应该同步加载,因此不需要回调。在检查了时间线和图表后,我发现情况已经不是这样了,这不是故意的行为。我在这里为这个问题打开了一个窗口:

我不知道您使用的是哪种可视化,但时间线和图形2D的一种解决方法是:同步加载可视化,并在下一个刻度上加载项目。因此,您可以在0毫秒后设置超时回调:

var timeline = new vis.Timeline(...);

alert('The Timeline is visible but the items not yet (this is a bug)')

setTimeout(function () {
  alert('Now everything is loaded!');
}, 0);

我在第一场演出中就解决了这个问题

 var firstshow=true;
 $scope.timeline.on("changed", function (properties) {
                if(firstshow)
                {
                    $scope.timeline.focus($scope.timeline.getVisibleItems());
                    firstshow=false;
                }

对我有效的解决方案是:

timeline.on('finishedRedraw', function() {

    console.log('do something');

});

看来这个问题还没有解决。您还可以连接到currentTimeTick时间线事件。请注意,此事件会持续触发,以便您可以在第一次触发后取消订阅

this.timeline.on("currentTimeTick", (prop) => {
        // Do something here
        // After fired the first time we un-subscribed
        this.timeline.off("currentTimeTick")
    })

是否异步加载数据?数据是异步加载的,加载完成后我会收到一个回调。然后,我处理数据并调用visjs。我假设visjs进程是异步运行的,因为我的代码会继续执行,并将控件返回到浏览器……但我必须等待图形显示。我想显示一个正在加载的图形,然后在visjs图形完成“渲染”后得到一个信号。我查看了visjs文档,和您一样,没有找到一种方法来完成。然而,如果您的项目可以选择的话,还有其他的图形库。我喜欢的是一款设计精良、使用方便的手机。为了进行比较,这里列出了他们和一些@Roberto的列表,请参见下面我的答案。同意似乎不需要回调。在图形库上做得不错。