#

Jump to Table of Contents

# Example: Using Y.Parallel

Using `Y.Parallel` for batch async function calls.

Run example

## Why Parallel

You may need to do a batch of asyncronious function calls and never care that each one is done, you just care that all of them are done. That's where `Y.Parallel` comes in handy.

## Using Parallel

`Y.Parallel` is more like a stack tool than anything else. First you create your stack:

    var stack = new Y.Parallel();

Then you can start adding callbacks to that stack:

    var stack = new Y.Parallel();

    stack.add(function() {});
    stack.add(function() {});
    stack.add(function() {});
    stack.add(function() {});

Finally, you listen for the stack to be complete:

    stack.done(function() {
        Y.log('Stack complete');
    });

## Simple Example

This is a simple example of calling a callback once all 5 of the `Y.later` calls have completed.

    YUI().use('parallel', 'node', function(Y) {

        //Create the stack
        var stack = new Y.Parallel(),
            //Setup our results node
            res = Y.one('#results');

        //Listen for the click on the button
        Y.one('#runner').on('click', function(e) {
            //Prevent the link from navigating
            e.preventDefault();

            //Note that we are starting the test.
            res.append('<strong>Running example</strong><br><br>');

            for (var i = 1000; i <= 5000; i=i+1000) {
                //Adding a timeout with callback for ~1s apart.
                Y.later(i, null, stack.add(function() {
                    //This is called when the timeout is reached.
                    res.append('Callback fired<br>');
                }));

            }

            //What to do when all the callbacks are completed.
            stack.done(function() {
                res.append('<br><strong>All Callbacks Done!</strong>');
            });

        });

    });