jquery deferred-execution deferred-loading

Entendiendo jQuery Deferred.pipe()



deferred promise jquery (1)

Estoy intentando implementar el método jQuery Deferred.pipe () para el siguiente escenario:

  1. Agregar un usuario en DB a través de $ .ajax ()
  2. Obtener respuesta si el usuario fue agregado correctamente o no.
  3. Si se agregó correctamente, obtenga toda la lista de usuarios del servidor a través de $ .ajax ()
  4. Mostrar la lista a través de plantillas jQuery

Esto es algo que intenté:

var addUserSuccess = function( data ) { if ( data.returnCode !== "success" ) { return $.Deferred().reject(''Error saving user''); } getUsers(); } var addUser = function() { return $.ajax(url, { type: "POST", data: { username: ''test'' }, contentType: "application/json", dataType: "json" }); } var displayUsers = function( data ) { $(''#myTmpl'').tmpl(data.d).appendTo(''#myDiv''); } var getUsers = function () { return $.ajax(url, { type: "GET", data: {}, contentType: "application/json", dataType: "json" }); } $.when(addUser()).pipe(addUserSuccess).then(displayUsers)

Pero esto no funciona. Sé que falta algo o está mal. ¿Alguna ayuda?


En addUsersSuccess, debería devolver getUsers. Es un error tipográfico simple, tienes la idea principal perfectamente correcta y estás usando pipe como debería ser y muy bien :)