Vis.js 网络加载完成回调

Vis.js callback when the network finishes loading

我正在使用一个 vis.js 网络,它接收一些数据并将所述数据添加为网络中的节点。

唯一的问题是在声明网络后(使用指定的节点和边,可能很多)网络中的节点需要一段时间才能呈现。

即使我这样声明网络:

var network = new vis.Network(container, data, options);

然后让容器可见:

$('#BreakdownBox').css('display','inline');

在节点完成缓冲之前它仍然可见,显示空白 canvas 直到它们被渲染。

我的问题: 我怎样才能让它在节点加载完成后才可见? 有没有办法使用 promises.js 呢?类似于:

var network = new vis.Network(container, data, options).done(function{
    $('#BreakdownBox').css('display','inline');
});

最后我使用原生加载栏来vis.js,使用他们的示例代码here

虽然有点瑕疵,但正是我所需要的。

你可以参考例子visjs loading bar

你需要监听 "stabilizationIterationsDone" 事件来隐藏你的进度条

network.once("stabilizationIterationsDone", function() {
   $('#BreakdownBox').css('display','none');

}); 

试试这个。您的代码将执行一次,该功能将被删除。由于您的代码绑定到 'afterDrawing' 事件而不是 'stabilizationIterationsDone' 事件,即使您禁用了物理,它也会被执行。

const functionThatDoesWhatYouNeed = () ={ 
    // Your code
    network.off('afterDrawing', functionThatDoesWhatYouNeed)
}
network.on('afterDrawing', functionThatDoesWhatYouNeed)

它将函数绑定到 'afterDrawing' 事件并删除自身,这样它就不会执行多次。