jQuery aplazado - obteniendo el resultado de llamadas ajax encadenadas

siguiente problema: tengo que llamar a la función ajax varias veces, y cuando todas las funciones estén completas, obtenga todos los resultados en la matriz. Se me ocurrió esto:

function doAjax(xx){
var xdata = {json: $.toJSON({name: xx}),
            delay: 1};
return $.ajax({
    url:"/echo/json/",
    data:xdata,
    type:"POST"
});

}

var carr = [doAjax('a'),doAjax('b'),doAjax('c'),doAjax('d')]
var result = [];

$.when( carr )
    .done(function(data){
        console.log(data);
        $.each(data, function(ix,val){
            console.log(val.name);
        });
    });

Violín aquíhttp://jsfiddle.net/Fkd9n/

Todo parece funcionar bien, el "console.log (data)" escribe los objetos con texto de respuesta, pero el "console.log (val.name)" siempre está "indefinido". Entonces, ¿cómo unir todos los resultados en una matriz una vez que se realizan todas las llamadas?

¡Gracias!

Respuestas a la pregunta(2)

Su respuesta a la pregunta