var _adata,_bdata; function a(){ // .... processing var start = new Date().getTime(); for (var i = 0; i < 1e7; i++) { if ((new Date().getTime() - start) > 500){ break; } } var result = jQuery.parseJSON( '{ "data": "1234" }' ); _adata = result; $("#debug").append("aData프로세스 완료<br>"); return result; } function b(){ // .... processing _bdata = 1234; $("#debug").append("bData프로세스 완료<br>"); return _bdata; } function c_ajax(){ return $.ajax({ url: 'http://jsfiddle.net/echo/jsonp/', data: { text: 'some text', par1: 'another text' }, dataType: 'jsonp', success: function(data){ $("#debug").append("data = "+data.par1+"<br>"); $("#debug").append("cData프로세스 완료<br>"); } }); } function d(aData, bData, abData){ $("#debug").append("완료!!<br>"); $("#debug").append("_adata="+_adata+", "+"_bdata="+_bdata+"<br>"); $("#debug").append("aData.data="+aData.data+", "+"bData="+bData+"<br>"); $("#debug").append("abData[0].text="+abData[0].text+"<br>"); } function fail(){ $("#debug").append("실패!"); } $.when(a(), b(), c_ajax()).then(d,fail).done(d);
<div id="debug"></div>