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

标签 javascript jquery asynchronous cytoscape.js cytoscape-web

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

subjectNode.style('label',myDesiredLabelToshow);

对我有用,但我在 for 循环中使用它,当我想慢慢地或在 Debug模式下查看我的算法如何标记它们时,节点的标签不会立即更改,它们最终会一起更改在我的函数结束后(我的意思是到达函数的结束范围)。

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

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

最佳答案

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

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

使用用户界面中的按钮“逐步”遍历算法中的点,或使用 promise 链中的动画来可视化进展。或者放弃在 UI 本身中显示调试提示,而只使用 console.log()

关于javascript - Cytoscape.js eles.style 更改立即更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47925344/

相关文章:

javascript - Coffeescript 意外条件评估

javascript - 在动态插入的文本字符串上触发 jQuery

javascript - 使用 MVC 将 CSV/TSV 文件传递​​到 D3

Grails 异步执行多个原生 sql 查询

c++ - 使用信号处理程序处理从 fifo 接收的数据

c# - DbContext 在 Async 方法中处理得太早

javascript - 使用 JS 渲染 EMF+ 图像

javascript - 如何获取 Json 数组中的值并单独使用它们

javascript - 多个滑动div的时间和速度

javascript - 如何定义要使用 ".channels"的公会?