¿Ejecutar código solo si la request AJAX toma una cierta cantidad de time?

En mi aplicación web, estoy usando una request $.ajax() para cargar datos desde una database y mostrarlos en el browser. Durante la ejecución de la request, muestro un post Loading Results ... como este:

 $.ajax({ // ... beforeSend: function() { $('#loading-results-message').show(); }, complete: function() { $('#loading-results-message').hide(); } }); 

Esto funciona bien Sin embargo, si no hay mucha información para cargar, la request toma solo una fracción de segundo. En este caso, el post solo se muestra por una fracción de segundo también. Esta animation sucede tan rápido que es difícil reconocerla. Por lo tanto, sería genial si fuera posible mostrar el post solo si la request toma una cierta cantidad de time, es decir, algunos segundos como mínimo pero no solo una fracción de segundo. ¿Es eso posible de alguna manera? Por cierto, estoy usando Django en el lado del server, si eso fuera importante.

Use setTimeout para establecer un timer, cancele el timer cuando la request finalice:

 var desinetworking_delay = 2000; var message_timer = false; $.ajax({ // ... beforeSend: function() { message_timer = setTimeout(function () { $('#loading-results-message').show(); message_timer = false; }, desinetworking_delay); }, complete: function() { if (message_timer) clearTimeout(message_timer); message_timer = false; $('#loading-results-message').hide(); } }); 

Documentación

Estoy con @chris en esta solución. Pero también podría valer la pena examinar http://api.jquery.com/jQuery.ajaxSetup/

Esto lo hará para que no tenga que escribir el time de espera para cada request.