Problema de sincronización utilizando .ajax() y .submit() de jQuery

Estándar

Trabajando con jQuery me encuentro con un error en mi código que al principio hizo que me arrancara algunos mechones de pelo de mi cabeza ;).

Resulta que estaba escribiendo una función “callback” para el manejador de evento .submit() de jQuery asociado a un formulario. En el cuerpo de dicha función debía completar automáticamente un campo de acuerdo a valores ya introducidos y obtener un documento JSON desde el servidor con mas datos y en conjunto finalmente poder completar el campo. Para esto último necesitaba usar .ajax(). Y mi odisea empezó…

Por alguna extraña razón la llamada al servidor nunca llegaba a destino y la función “callback” error de .ajax() era invocada pasando un parámetro de error con valor 0. WTF pensaba.

Luego de un tiempo de probar y probar me di cuenta que no le daba tiempo a .ajax() para ejecutar su llamada al servidor ya que la función .submit() retornaba demasiado rápido. Teniendo en cuenta que por defecto .ajax() es asincrónico, pasando como parámetro async: false solucioné el problema.