Fun with MBStock Queue
https://raw.github.com/mbostock/queue/master/queue.js
by deanpeters
HTML
<script src="https://raw.github.com/mbostock/queue/master/queue.js"></script>
<h3>Fun with MBStock Queue for JavaScript</h3>
<h4>seems overbuilt to me ... could use a timer</h4>
<ul>
<li><a href="https://github.com/mbostock/queue">https://github.com/mbostock/queue</a></li>
<li><a href="https://raw.github.com/mbostock/queue/master/queue.js">https://raw.github.com/mbostock/queue/master/queue.js<a/></li>
</ul>
<div id="loremIpsum">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean mattis vestibulum nunc, vel blandit augue condimentum at. Quisque risus urna, bibendum eget posuere id, fringilla vitae mi. Aliquam hendrerit ante eu urna venenatis at ultricies lacus vehicula. Vivamus venenatis pharetra orci eu imperdiet. Pellentesque magna purus, eleifend adipiscing ultrices vel, pretium sed mi. Morbi sed nulla est, vitae sodales felis. Pellentesque convallis consectetur mattis. Donec augue mauris, dictum in porta ut, fringilla et urna. Integer cursus scelerisque diam, ullamcorper ultrices nulla cursus ut. In neque urna, mollis ac mattis vitae, sodales nec ipsum. Donec quis lectus quis odio euismod interdum. Nunc tristique luctus massa ut tincidunt. In hac habitasse platea dictumst. </div>
JavaScript
/*
queue.defer(method[, arguments…])
Adds the specified method to the queue, with any optional arguments. The method is called with the optional arguments and a final callback argument, which should be called when the task has finished.
*/
var test1 = function(ct, msg) {
var to = (ct % 2 ? 5000 : 1);
setTimeout(console.log('test' + ct, msg, to), to);
}
var elem = document.getElementById('loremIpsum');
var sbuf = (elem.textContent || elem.innerText).split(" ");
/*
queue()
.defer(test1, 'foo')
.defer(test1, 'bar')
.await(function(error, results) { console.log(results); });
*/
var Q = queue();
var ii = 0;
// sbuf.forEach(function(t) { Q.defer( function() {console.log('test:' + ii++, t);}); });
sbuf.forEach(function(t) { Q.defer( test1, ii++, t ); });
Q.await(function(error, results) { console.log("all done!"); });