tengo dos funciones javascript, save()
y saveAll()
, configurado de la siguiente manera:recaudación deferred.then jQuery() una vez que todos los objetos diferidos se han resuelto
function save(data) {
return $.post('/save', data);
}
function saveAll(callback) {
var dataArray = [];
$.each(dataArray, function() {
save(this);
});
callback();
}
estoy interesado en la modificación de saveAll()
para que apalanca jquery aplazó objetos y aumenta la función callback
una vez que todas las operaciones save()
se hayan completado. sin embargo, no estoy seguro de la sintaxis exacta ... específicamente con relación al $ .each() dentro de $ .when(). sería algo como esto?
function saveAll(callback) {
var dataArray = [];
$.when(
$.each(dataArray, function() {
return save(this);
})
).then(callback);
}
Esto es fantástico, estaba buscando exactamente esto. Estoy sorprendido de que jQuery no permita una variedad de objetos diferidos de forma nativa. –
Solo tenga cuidado, porque un hecho poco conocido sobre $ .when es que se resolverá inmediatamente si cualquiera de los argumentos es rechazado/fallado, ¡sin esperar el resto! Es cierto :) e inesperado, si me preguntas. Escribí un $ .whenAll() que siempre espera a que se resuelvan todos los argumentos, independientemente del estado de éxito/falla: http://jsfiddle.net/InfinitiesLoop/yQsYK/ – InfinitiesLoop