Cytoscape.js eles.style 更改立即更新

Posted

技术标签:

【中文标题】Cytoscape.js eles.style 更改立即更新【英文标题】:Cytoscape.js eles.style changes update immediately 【发布时间】:2018-06-04 03:41:02 【问题描述】:

我在毕业项目中使用 Cytoscape.js 2.7.15,我需要做一些简单的可视化,比如更改节点的标签。

subjectNode.style('label',myDesiredLabelToshow);

对我有用,但我在 for 循环中使用它,当我想慢慢地或在调试模式下查看我的算法如何工作来标记它们时,节点的标签不会立即改变,它们最终会一起改变在我的功能结束后(我的意思是结束功能范围)。

我尝试使用cy.batch();cy.startBatch(),甚至尝试设置Timeout,但没有任何效果。

在调试模式下跟踪 cytoscape.js 文件后,我看到一个函数 o.requestAnimationFrame = function.. 在调试器命中后我的图表上应用了更改,怎么能我在自定义函数中手动触发它?

【问题讨论】:

不确定。也许将 cy.forceRender() 添加到循环中,并将断点放在该行之后? cy.forceRender() 也没有用 【参考方案1】:

几乎所有渲染器都会使用requestAnimationFrame() 的渲染循环。这意味着它是异步的,在步进时您不会看到结果。

答案是不要使用断点或单步执行,因为这些方法假定一切都是同步进行的。

使用 UI 中的按钮“逐步”通过算法中的点,或使用承诺链中的动画来可视化进程。或者放弃在 UI 中显示调试提示,直接使用 console.log()

【讨论】:

以上是关于Cytoscape.js eles.style 更改立即更新的主要内容,如果未能解决你的问题,请参考以下文章

D3.js 和 Cytoscape.js 有啥区别? [关闭]

Cytoscape.js 的性能和布局

Cytoscape.js 乔木布局画布渲染器?

cytoscape.js 图,仅显示/绘制少数节点和边缘

cytoscape.js在vue项目中的安装及案例

Vue中使用Cytoscape.js