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 に答える