var aIsCompleted=false, bIsCompleted=false, cIsCompleted=false, aData, bData, cData; function a(){ // .... processing var start = new Date().getTime(); for (var i = 0; i < 1e7; i++) { if ((new Date().getTime() - start) > 500){ break; } } aData = {data: 1234}; aIsCompleted = true; d(); } function b(){ // .... processing bData = 1234; bIsCompleted = true; d(); } function c_ajax(){ return $.ajax({ url: 'http://jsfiddle.net/echo/jsonp/', data: { text: 'some text', par1: 'another text' }, dataType: 'jsonp', jsonpCallback: 'callbackMethod', success: function(data){ cData = data; $("#console").append("data.par1 = "+data.par1+"<br>"); cIsCompleted=true; d(); } }); } function d(){ if(aIsCompleted && bIsCompleted && cIsCompleted){ // .... processing $("#console").append("aData.data="+aData.data+", "+"bData="+bData+", cData.text="+cData.text+"<br>"); }else{ // .... continue if(aIsCompleted){ $("#console").append("aData프로세스 완료<br>"); }else{ $("#console").append("aData프로세스 진행중..<br>"); } if(bIsCompleted){ $("#console").append("bData프로세스 완료<br>"); }else{ $("#console").append("bData프로세스 진행중..<br>"); } if(cIsCompleted){ $("#console").append("cData프로세스 완료<br>"); }else{ $("#console").append("cData프로세스 진행중..<br>"); } } } a(); b(); c_ajax();
<div id="console"></div>