diferido.entonces (doneFilter [, failFilter ] [, progressFilter ] )Devoluciones: Promesa

Descripción: Agregue controladores a los que se llamará cuando el objeto diferido se resuelva, rechace o aún esté en curso.

  • versión agregada: 1.8diferido.entonces (doneFilter [, failFilter ] [, progressFilter ] )

    • doneFilterTipo: Función () Una función a la que se llama cuando se resuelve el aplazado.
    • failFilterTipo: Función () Una función opcional que se llama cuando se rechaza el aplazado.
    • progressFilterTipo: Función () Una función opcional que se llama cuando se envían notificaciones de progreso al Diferido.
  • versión agregada: 1,5, eliminado: 1.8diferido.entonces (doneCallbacks, failCallbacks)

    • doneCallbacksTipo: Función () Una función, o array de funciones, llamado cuando se resuelve el Diferido.
    • failCallbacksTipo: Función () Una función, o array de funciones, llamado cuando se rechaza el aplazado.
  • versión agregada: 1,7, eliminado: 1.8deferred.then (doneCallbacks, failCallbacks [, progressCallbacks ] )

    • doneCallbacksTipo: Función () Una función, o array de funciones, llamado cuando se resuelve el Diferido.
    • failCallbacksTipo: Función () Una función, o array de funciones, llamado cuando se rechaza el aplazado.
    • progressCallbacksTipo: Función () Una función, o array de funciones, llamado cuando el aplazado notifica el progreso.

Antes de jQuery 1.8, los argumentos pueden ser una función o un array de funciones.

Para todas las firmas, los argumentos pueden ser null si no se desea una devolución de llamada de ese tipo. Alternativamente, use .done(), .fail() o .progress() para establecer solo un tipo de devolución de llamada sin filtrar estados o valores.

A partir de jQuery 1.8, los deferred.then() El método devuelve una nueva promesa que puede filtrar el estado y los valores de un diferido a través de una función, reemplazando el ahora obsoleto deferred.pipe() método. los doneFilter y failFilter Las funciones filtran el estado y los valores de resuelto / rechazado del diferido original. los progressFilter La función filtra cualquier llamada al diferido original. notify o notifyWith métodos. Estas funciones de filtro pueden devolver un nuevo valor para pasar a la promesa .done() o .fail() devoluciones de llamada, o pueden devolver otro objeto observable (diferido, promesa, etc.) que pasará su estado y valores resueltos / rechazados a las devoluciones de llamada de la promesa. Si la función de filtro utilizada es null, o no especificado, la promesa se resolverá o rechazará con los mismos valores que el original.

Las devoluciones de llamada se ejecutan en el orden en que se agregaron. Ya que deferred.then devuelve una Promesa, otros métodos del objeto Promise se pueden encadenar a este, incluidos los .then() métodos.

Ejemplos:

Desde el jQuery.get devuelve un objeto jqXHR, que se deriva de un objeto diferido, podemos adjuntar controladores usando el .then método.

$.get("test.php").then(function()alert("$.get succeeded");,function()alert("$.get failed!"););

Filtrar el valor de resolución:

doctypehtml><htmllang="en"><head><metacharset="utf-8"><title>deferred.then demotitle><scriptsrc="https://code.jquery.com/jquery-3.5.0.js">script>head><body><button>Filter Resolvebutton><p>p><script>varfilterResolve=function()var defer = $.Deferred(),
    filtered = defer.then(function(value)return value *2;);
 
  defer.resolve(5);
  filtered.done(function(value)$("p").html("Value is ( 2*5 = ) 10: "+ value ););;$("button").on("click", filterResolve );script>body>html>

Manifestación:

Valor de rechazo del filtro:

var defer = $.Deferred(),
  filtered = defer.then(null,function(value)return value *3;);
 
defer.reject(6);
filtered.fail(function(value)alert("Value is ( 3*6 = ) 18: "+ value ););

Tareas en cadena:

var request = $.ajax( url, dataType:"json"),
  chained = request.then(function(data)return $.ajax( url2, data: user: data.userId ););
 
chained.done(function(data)// data retrieved from url2 as provided by the first request);