07 – Exploring Async.js – async.cargo

Share:
Source Code

In this tutorial, we’ll learn how to put your async functions on an assembly line and execute a set number of functions at a time.

var async = require('async');
var _ = require('lodash');

//Generate an array of 10 random tasks;
/*
[
	'task_1',
	'task_2',
	.
	.
	.
	'task_10'
]
 */
var tasksList = _.times(10, _.uniqueId.bind(null, 'task_'));


// Create a cargo object with payload 3
// cargo(worker, [payload])
var tasksCargo = async.cargo(function(tasks, callback) {
    for(var i=0; i<tasks.length; i++){
      console.log('working on ' + tasks[i].name);
    }

    callback();
    //Something goes wrong, this will pass error to the task function and it will error out.
    //callback('broke');
}, 3);


//Push tasks to tasksList
_.each(tasksList, function(task) {
	tasksCargo.push({name: task}, function(err) {
		//Something went wrong
		if (err) {
			console.log(err);
			return;
		}

		//All good here
		console.log('Task ' + task + ' is done');
	});
});

 

Comments Or Questions? Discuss In Our Discord

If you enjoyed this tutorial, make sure to subscribe to our Youtube Channel and follow us on Twitter @pentacodevids for latest updates!

More from PentaCode