Cómo saber cuándo finaliza una tarea asíncrona recursiva

Tengo una función asíncrona, que puede repetirse en sí misma.

Estoy agregando jQuery diferidos a una matriz cada vez que se ejecuta la función, un uso$.when() para verificar si todas las promesas se han resuelto. Mi problema es que parece que no puedo hacer esto sin un tiempo de espera arbitrario, ya que simplemente no sé cuándo la función deja de recurrir y agrega nuevas promesas.

Aquí está unDemostración de JSBin.Y aquí está elejemplo del mundo real.

Respuestas a la pregunta(2)

Su respuesta a la pregunta