var data = []; for (var i = 0; i < 100; i++) { data.push(Math.ceil(Math.random() * 100)); } displayArray(data); $('#output').append('Lets start Sorting <br/>'); async.sortBy(data, processData, function (err, result) { if (err) { $('#output').append('OOPS! How is this possible?' + "<br/>"); } $('#output').append('Processing Done <br/>'); displayArray(result); }); function processData(item, callback) { //here in real condition //based on the data you might fire an ajax request to get its final sort value //simulate a time taking task var json = $.parseJSON(item); $.ajax({ dataType: "json", type: 'post', url: '/echo/json/', data: { delay: 1, json: json }, success: function (data) { console.log(data); $('#output').append('.'); callback(null, data); } }); } function displayArray(to_display) { $('#output').append('Our Array<br/>'); $('#output').append('====================<br/>'); for (var i = 0; i < to_display.length; i++) { $('#output').append(to_display[i] + ","); } $('#output').append('<br/>' + '====================' + '<br/>'); }