Jak połączyć trzy asynchroniczne wywołania za pomocą obietnic jQuery?

Mam trzy wywołania HTTP, które muszę wykonać synchronicznie i jak przekazywać dane z jednego połączenia do drugiego?

function first()
{
   ajax()
}

function second()
{
   ajax()
}

function third()
{
   ajax()
}


function main()
{
    first().then(second).then(third)
}

Próbowałem użyć odroczonej dla dwóch funkcji i wymyśliłem częściowe rozwiązanie. Czy mogę rozszerzyć go na trzy funkcje?

function first() {
    var deferred = $.Deferred();
     $.ajax({

             "success": function (resp)
             {

                 deferred.resolve(resp);
             },

         });
    return deferred.promise();
}

function second(foo) {
     $.ajax({
            "success": function (resp)
            {
            },
            "error": function (resp)
            {
            }
        });
}


first().then(function(foo){second(foo)})

questionAnswers(10)

yourAnswerToTheQuestion