最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Dynamically change the number of 'defer' calls in queue.js - Stack Overflow

programmeradmin0浏览0评论

My webpage lets the user plot multiple timeseries on a chart and I am using queue.js to go and asynchronously get this data, like so:

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
}

I want the user to be able to request extra lines, if they wish, which will mean that I need to do extra 'defer' calls. I'd like to know how to dynamically append extra 'defer' calls (if it's possible) and also how to create the 'onDataLoaded' function so that it can handle a variable amount of parameters.

My webpage lets the user plot multiple timeseries on a chart and I am using queue.js to go and asynchronously get this data, like so:

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
}

I want the user to be able to request extra lines, if they wish, which will mean that I need to do extra 'defer' calls. I'd like to know how to dynamically append extra 'defer' calls (if it's possible) and also how to create the 'onDataLoaded' function so that it can handle a variable amount of parameters.

Share Improve this question asked Feb 10, 2014 at 20:27 ninjaPixelninjaPixel 6,3924 gold badges38 silver badges50 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 10

I'd like to know how to dynamically append extra 'defer' calls (if it's possible)

Use a variable for the queue, and dynamically append defer calls to it:

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

how to create the 'onDataLoaded' function so that it can handle a variable amount of parameters.

You can use the arguments object to access a variadic amount of parameters. In your case, it would look like

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 { … }
}
发布评论

评论列表(0)

  1. 暂无评论