【问题标题】:Why do I need to include d3.now() within d3.interval?为什么我需要在 d3.interval 中包含 d3.now()?
【发布时间】:2020-04-03 05:43:39
【问题描述】:

我最近深入研究了 d3 force 和 d3.time。 有很多使用 d3.time 的例子。

我了解 d3.interval - 这使得 d3.timer 循环的运行速度比现在慢。

然而, 我不知道为什么这段代码将 d3.now() 放在 d3.interval 中。 而且不知道为什么在 d3.interval 中有两个元素 一个是 2000,另一个是 d3.now()。

入口代码: https://jsfiddle.net/onw8v29g/

我被卡住了。

d3.interval(function() {
  nodes.push(c); // Re-add c.
  links.push({source: b, target: c}); // Re-add b-c.
  links.push({source: c, target: a}); // Re-add c-a.
  restart();
}, 2000, d3.now() + 1000);

附言 我认为学习 d3 时最令人生畏的部分是解码文档。 我最近开始阅读'd3 indepth',这对解密官方文档很有帮助。如果你们对理解 d3 有其他建议,也请告诉我。

谢谢。

【问题讨论】:

    标签: javascript d3.js data-visualization


    【解决方案1】:

    d3.interval(callback[, delay[, time]])

    调度一个新的计时器,重复调用指定的回调,直到间隔停止。可以指定以毫秒为单位的可选数字延迟,以在延迟后调用给定的回调;如果未指定延迟,则默认为零。延迟是相对于指定的时间,以毫秒为单位;如果不指定时间,则默认为现在。

    所以基本上回调实际上是在时钟“(d3.now()+ 1000)+ 2000”毫秒时调用的。

    参考:https://github.com/d3/d3-timer#interval 检查计时器说明以了解参数规格。

    【讨论】:

    • 谢谢,我已经阅读了参考资料。那么这是什么意思?我在文档中看到过很多次,但对这个符号一无所知。如果是 d3.interval(callback, [delay] , [time]),我可以理解它的含义,但我不确定这些符号的含义是否与我猜想的相同。
    • 而我的主要问题是为什么我需要为功能添加 d3.now... 为什么我需要专门的“d3.now()”?
    • @BS100 在许多编程语言的文档中,使用方括号是可选参数的典型表示法。另见:"What do the brackets around the arguments mean when reading documentation for a method?"
    • @BS100 你根本不需要它。这就是延迟的基础,所以如果你什么都不传递作​​为第三个参数([param] 是可选的),默认值将是 Date.now()。恢复,如果它通过了第三个参数,延迟将被加到这个第三个参数(基准时间),如果它没有通过延迟将来自 Date.now() 所以只期望一个 delay在时间间隔内执行。
    猜你喜欢
    • 2015-04-29
    • 2018-10-09
    • 2021-05-29
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多