4

私のウェブページでは、ユーザーはチャートに複数の時系列をプロットできます。次のように、queue.js を使用してこのデータを非同期に取得しています。

queue()
.defer(d3.json, "api/TransactionCost/?marketCode=" + marketCode1)
.defer(d3.json, "api/TransactionCost/?marketCode=" + marketCode2)
.defer(d3.json, "api/TransactionCost/?marketCode=" + marketCode3)
.await(onDataLoaded);

function onDataLoaded(error, json1, json2, json3) {
  // plot the 3 timeseries
}

ユーザーが必要に応じて追加の行を要求できるようにしたいのですが、これは、追加の「延期」呼び出しを行う必要があることを意味します。追加の 'defer' 呼び出しを動的に追加する方法(可能な場合) と、可変量のパラメーターを処理できるように 'onDataLoaded' 関数を作成する方法を知りたいです。

4

1 に答える 1

10

追加の 'defer' 呼び出しを動的に追加する方法を知りたい (可能であれば)

キューに変数を使用し、defer呼び出しを動的に追加します。

var q = queue();
for (/* each file */)
    q = q.defer(d3.json, filename);
q.await(onDataLoaded);

可変量のパラメーターを処理できるように「onDataLoaded」関数を作成する方法。

このargumentsオブジェクトを使用して、可変量のパラメーターにアクセスできます。あなたの場合、それは次のようになります

function onDataLoaded(error) {
    if (!error) {
        // Either simply loop them:
        for (var i=1; i<arguments.length; i++)
            … arguments[i] …
        // or slice them into an array:
        var jsons = Array.prototype.slice.call(arguments, 1);
        …
    } else { … }
}
于 2014-02-10T20:42:04.560 に答える