d3.js - How to efficiently remove first element from a selection? -


i have page displays data using d3.js. due heavy processing load, when page load freezes browser few seconds.

i have determined "browser locking" behavior due line of form:

selection.attr('d', linefn); 

...where selection contains around 10k items.

i replace line like

function process_rest () {     if (selection.size() > 0) {        var next_item = first(selection);  // function first() hypothetical!        next_item.attr('d', linefn);        selection = rest(selection);       // function rest() hypothetical!        settimeout(process_rest, 100);        return;     }     finish_up(); } settimeout(process_rest, 100); 

i'm looking efficient way implement either first , rest. naive guess like:

function first(selection) {     return d3.select(selection[0][0]); }  function rest(selection) {     selection[0] = selection[0].slice(1);     return selection; } 

...but, afaik, going "behind api", or @ least feels it. there "official" (i.e. documented) way achieve same result?

edit: deleted shift variant (it's safer not update selection until after processing of first element has been completed).

you can use .each():

selection.each(function(d, i) {   settimeout(function() { d3.select(this).attr("d", linefn); }, * 100); }); 

Comments

Popular posts from this blog

Android layout hidden on keyboard show -

google app engine - 403 Forbidden POST - Flask WTForms -

c - Why would PK11_GenerateRandom() return an error -8023? -