// setup function finder(records, cb) { setTimeout(function () { records.push(3, 4); cb(records); }, 500); } function processor(records, cb) { setTimeout(function () { records.push(5, 6); cb(records); }, 500); } // using the callbacks finder([1, 2], function (records) { processor(records, function(records) { console.log(records); }); }); // or function onProcessorDone(records){ alert(records); } function onFinderDone(records) { processor(records, onProcessorDone); } finder([1, 2], onFinderDone);