2

我正在关注http://adambom.github.io/parallel.js/上的示例

例子:

var p = new Parallel([0, 1, 2, 3, 4, 5, 6]), 
        log = function () { console.log(arguments); };

function fib(n) {
  return n < 2 ? 1 : fib(n - 1) + fib(n - 2);
};

p.map(fib).then(log)

效果很好,现在我想在 d3 对象上应用相同的概念。

我有一个循环遍历名称列表的 for 循环:

for name in names by 1
  // set some stuff
  context = [....]
  metrics = [....]

  d3.select("#"+name)
    .selectAll(".horizon")
    .data(metrics).enter()
    .insert("div", ".bottom")
    .attr("class", "horizon")
    .call context.horizon()

如果我将 for 循环的内容放在函数 fib 内容中,它会抱怨“未定义的 d3 变量”......但我觉得我错过了这个概念。

4

2 回答 2

0

你不能并行化链。d3 在这里没有什么特别之处——当你链接调用时,即foo(a).bar(b).foobar(c)它意味着foo()返回一个带有方法的对象,bar()而该对象又返回带有方法的对象foobar()。这本质上意味着您不能并行运行foo()bar()因为后者需要前者的结果。

于 2013-07-24T07:47:14.117 回答
0

我无法并行化 d3.select

但我只能并行化构建数组指标的部分,但几乎什么也没做——少了 1 秒?

如果我发现任何东西,我将发布我的解决方案

于 2013-07-23T23:22:15.243 回答