Edit in JSFiddle

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>