Como acionar um evento no texto de entrada depois que eu paro de digitar / escrever?

Eu quero acionar um evento logo depois que eu parei de digitar (não durante a digitação) caracteres na minha caixa de texto de entrada.

Eu tentei com:

$('input#username').keypress(function() {
    var _this = $(this); // copy of this object for further usage

    setTimeout(function() {
        $.post('/ajax/fetch', {
            type: 'username',
            value: _this.val()
        }, function(data) {
            if(!data.success) {
                // continue working
            } else {
                // throw an error
            }
        }, 'json');
    }, 3000);
});

Mas este exemplo produz um tempo limite para cada caractere digitado e recebo cerca de 20 solicitações AJAX se eu digitar 20 caracteres.

Neste violino Eu demonstro o mesmo problema com um alerta simples em vez de um AJAX.

Existe uma solução para isso ou estou apenas usando uma abordagem ruim para isso?

questionAnswers(10)

yourAnswerToTheQuestion