jQuery adiado - aguardando a conclusão de várias solicitações AJAX [duplicadas]

Esta pergunta já tem uma resposta aqui:

Passe em uma matriz de adiados para $ .when () 9 respostas

Eu tenho uma cadeia profunda de três camadas de chamadas ajax adiadas e, idealmente, elas vão cumprir a promessa quando a camada mais profunda terminar (me faz lembrar do Inception ... "precisamos ir mais fundo!").

O problema é que estou enviando muitos pedidos de Ajax (possivelmente centenas) de uma só vez e preciso adiar até que todos eles estejam concluídos. Não posso confiar no último feito pela última vez.

function updateAllNotes() {
    return $.Deferred(function(dfd_uan) {
        getcount = 0;
        getreturn = 0;
        for (i = 0; i <= index.data.length - 1; i++) {
            getcount++;
            $.when(getNote(index.data[i].key)).done(func,tion() {
                // getNote is another deferred
                getreturn++
            });
        };
        // need help here
        // when getreturn == getcount, dfd_uan.resolve()
    }).promise();
};

questionAnswers(3)

yourAnswerToTheQuestion