Basta ya de investigar en otras páginas ya que has llegado al lugar necesario, contamos con la solución que necesitas encontrar sin complicaciones.
Resumen
Obsoleto. Este módulo define la API heredada de dojo / _base / Deferred. El nuevo código debería usar dojo / Deferred en su lugar.
La API diferida se basa en el concepto de promesas que proporcionan una interfaz genérica para la eventual finalización de una acción asincrónica. La motivación de las promesas se trata fundamentalmente de crear una separación de preocupaciones que le permita a uno lograr el mismo tipo de patrones de llamada y flujo de datos lógicos en código asincrónico que se puede lograr en código sincrónico. Promises permite que uno pueda llamar a una función puramente con los argumentos necesarios para la ejecución, sin confundir la llamada con preocupaciones de si es sincronizada o asincrónica. No debería ser necesario modificar los argumentos de una llamada si la implementación cambia de sincronización a asíncrona (o viceversa). Al hacer que las funciones asíncronas devuelvan promesas, las preocupaciones de realizar la llamada se separan de las preocupaciones de la interacción asíncrona (que son manejadas por la promesa).
El diferido es un tipo de promesa que proporciona métodos para cumplir la promesa con un resultado exitoso o un error. El método más importante para trabajar con las promesas de Dojo es el método then (), que sigue la API de promesa propuesta por CommonJS. Un ejemplo del uso de una promesa de Dojo:
var resultingPromise = someAsyncOperation.then(function(result)... handle result ...,function(error)... handle error ...);
La llamada .then () devuelve una nueva promesa que representa el resultado de la ejecución de la devolución de llamada. Las devoluciones de llamada nunca afectarán el valor de las promesas originales.
Las instancias diferidas también proporcionan las siguientes funciones para compatibilidad con versiones anteriores:
- addCallback (controlador)
- addErrback (controlador)
- devolución de llamada (resultado)
- errback (resultado)
Las devoluciones de llamada pueden devolver promesas por sí mismas, por lo que puede crear secuencias complicadas de eventos con facilidad.
El creador del diferido puede especificar un cancelador. El cancelador es una función que se llamará si se llama a Deferred.cancel antes de que se active Deferred. Puede usar esto para implementar la cancelación limpia de una XMLHttpRequest, etc. Tenga en cuenta que cancelar activará el diferido con un CancelledError (a menos que su cancelador devuelva otro tipo de error), por lo que los errbacks deben estar preparados para manejar ese error para los aplazados cancelables.
Uso
Diferido(canceller);
Parámetro | Escribe | Descripción |
---|---|---|
puesto de dirigente | Función | Opcional |
Ver el dojo / _base / Documentación de referencia diferida para más información.
Ejemplos de
Ejemplo 1
var deferred =newDeferred();setTimeout(function() deferred.callback(success:true);,1000);return deferred;
Ejemplo 2
Los objetos diferidos se utilizan a menudo al hacer que el código sea asincrónico. Puede ser más fácil escribir funciones de manera síncrona y luego dividir el código usando un diferido para desencadenar una respuesta a una operación de larga duración. Por ejemplo, en lugar de registrar una función de devolución de llamada para indicar cuándo se completa una operación de renderizado, la función simplemente puede devolver un aplazado:
// callback style:functionrenderLotsOfData(data, callback)var success =falsetryfor(var x in data)renderDataitem(data[x]); success =true;catch(e)if(callback)callback(success);// using callback stylerenderLotsOfData(someDataObj,function(success)// handles success or failureif(!success)promptUserToRecover(););// NOTE: no way to add another callback here!!
Ejemplo 3
El uso de un diferido no simplifica en absoluto el envío de código, pero proporciona una interfaz estándar tanto para las personas que llaman como para los remitentes, lo que proporciona a ambos una forma sencilla de dar servicio a múltiples devoluciones de llamada para una operación y libera a ambas partes de preocuparse por detalles como “hizo esto ¿Ya te llamaron? “. Con diferidos, se pueden agregar nuevas devoluciones de llamada en cualquier momento.
// Deferred style:functionrenderLotsOfData(data)var d =newDeferred();tryfor(var x in data)renderDataitem(data[x]); d.callback(true);catch(e) d.errback(newError("rendering failed"));return d;// using Deferred stylerenderLotsOfData(someDataObj).then(null,function()promptUserToRecover(););// NOTE: addErrback and addCallback both return the Deferred// again, so we could chain adding callbacks or save the// deferred for later should we need to be notified again.
Ejemplo 4
En este ejemplo, renderLotsOfData es sincrónico, por lo que ambas versiones son bastante artificiales. Poner la pantalla de datos en un tiempo de espera ayuda a mostrar por qué los diferidos se mueven:
// Deferred style and async funcfunctionrenderLotsOfData(data)var d =newDeferred();setTimeout(function()tryfor(var x in data)renderDataitem(data[x]); d.callback(true);catch(e) d.errback(newError("rendering failed"));,100);return d;// using Deferred stylerenderLotsOfData(someDataObj).then(null,function()promptUserToRecover(););
Tenga en cuenta que la persona que llama no tiene que cambiar su código en absoluto para manejar el caso asincrónico.
Propiedades
despedido
Definido por: dojo / _base / Deferred
promesa
Definido por: dojo / _base / Deferred
Métodos
addBoth
(callback)
Definido por dojo / _base / Deferred
Agregue el controlador como devolución de llamada exitosa y devolución de llamada de error para esta instancia diferida.
Parámetro | Escribe | Descripción |
---|---|---|
llamar de vuelta | Función |
Devoluciones: cualquiera | indefinido
Devuelve este objeto diferido.
addCallback
(callback)
Definido por dojo / _base / Deferred
Agrega una devolución de llamada exitosa para esta instancia diferida.
Parámetro | Escribe | Descripción |
---|---|---|
llamar de vuelta | Función |
Devoluciones: cualquiera | indefinido
Devuelve este objeto diferido.
addCallbacks
(callback,errback)
Definido por dojo / _base / Deferred
Agrega devolución de llamada y devolución de llamada de error para esta instancia diferida.
Parámetro | Escribe | Descripción |
---|---|---|
llamar de vuelta | Función | Opcional
La devolución de llamada adjunta a este objeto diferido. |
errback | Función | Opcional
La devolución de llamada de error adjunta a este objeto diferido. |
Devoluciones: alguna
Devuelve este objeto diferido.
addErrback
(errback)
Definido por dojo / _base / Deferred
Agrega devolución de llamada de error para esta instancia diferida.
Parámetro | Escribe | Descripción |
---|---|---|
errback | Función |
Devoluciones: cualquiera | indefinido
Devuelve este objeto diferido.
callback
(value)
Definido por dojo / _base / Deferred
Completa la instancia diferida con éxito con el valor proporcionado
Parámetro | Escribe | Descripción |
---|---|---|
valor | indefinido |
cancel
()
Definido por dojo / _base / Deferred
Cancela la operación asincrónica
errback
(error)
Definido por dojo / _base / Deferred
Cumple la instancia diferida como un error con el error proporcionado
Parámetro | Escribe | Descripción |
---|---|---|
error | indefinido |
isCanceled
()
Definido por dojo / _base / Deferred
Comprueba si se ha cancelado el aplazado.
Devoluciones: Booleano
isFulfilled
()
Definido por dojo / _base / Deferred
Comprueba si el aplazado ha sido resuelto o rechazado.
Devoluciones: Booleano
isRejected
()
Definido por dojo / _base / Deferred
Comprueba si el aplazado ha sido rechazado.
Devoluciones: Booleano
isResolved
()
Definido por dojo / _base / Deferred
Comprueba si se ha resuelto el aplazado.
Devoluciones: Booleano
progress
(update)
Definido por dojo / _base / Deferred
Envíe eventos de progreso a todos los oyentes
Parámetro | Escribe | Descripción |
---|---|---|
actualizar | indefinido |
reject
(error)
Definido por dojo / _base / Deferred
Cumple la instancia diferida como un error con el error proporcionado
Parámetro | Escribe | Descripción |
---|---|---|
error | indefinido |
resolve
(value)
Definido por dojo / _base / Deferred
Cumple la instancia diferida con éxito con el valor proporcionado
Parámetro | Escribe | Descripción |
---|---|---|
valor | indefinido |
then
(resolvedCallback,errorCallback,progressCallback)
Definido por dojo / _base / Deferred
Agrega un fulderedHandler, errorHandler y progressHandler que se llamarán para completar una promesa. Se llama a fulotedHandler cuando se cumple la promesa. Se llama al errorHandler cuando falla una promesa. Se llama a progressHandler para eventos de progreso. Todos los argumentos son opcionales y los valores que no son de función se ignoran. ProgressHandler no es solo un argumento opcional, sino que los eventos de progreso son puramente opcionales. Los proveedores de promesas no están obligados a crear eventos de progreso.
Esta función devolverá una nueva promesa que se cumplirá cuando finalice la devolución de llamada dada de fulderedHandler o errorHandler. Esto permite encadenar las operaciones de promesa. El valor devuelto por el controlador de devolución de llamada es el valor de cumplimiento de la promesa devuelta. Si la devolución de llamada arroja un error, la promesa devuelta se moverá al estado fallido.
Parámetro | Escribe | Descripción |
---|---|---|
resuelto | Función | Opcional |
errorCallback | Función | Opcional |
progressCallback | Función | Opcional |
Devoluciones: alguna
Devuelve una nueva promesa que representa el resultado de la ejecución de la devolución de llamada. Las devoluciones de llamada nunca afectarán el valor de las promesas originales.
Ejemplos de
Ejemplo 1
Un ejemplo del uso de una promesa compatible con CommonJS:
asyncComputeTheAnswerToEverything().then(addTwo).then(printResult, onError);>44
when
(valueOrPromise,callback,errback,progback)
Definido por dojo / when
Aplica de forma transparente devoluciones de llamada a valores y / o promesas.
Acepta promesas pero también maneja de manera transparente las no promesas. Si no se proporcionan devoluciones de llamada, devuelve una promesa, independientemente del valor inicial. Las promesas extranjeras se convierten.
Si se proporcionan devoluciones de llamada y el valor inicial no es una promesa, la devolución de llamada se ejecuta inmediatamente sin manejo de errores. Devuelve una promesa si el valor inicial es una promesa, o el resultado de la devolución de llamada en caso contrario.
Parámetro | Escribe | Descripción |
---|---|---|
valueOrPromise | indefinido |
Ya sea un valor regular o un objeto con un |
llamar de vuelta | Función | Opcional
La devolución de llamada se invocará cuando se resuelva la promesa o se reciba una no promesa. |
errback | Función | Opcional
La devolución de llamada se invoca cuando se rechaza la promesa. |
progback | Función | Opcional
La devolución de llamada se invoca cuando la promesa emite una actualización de progreso. |
Devoluciones: dojo / promesa / promesa | resumen: | nombre:
Promesa, o si se proporciona una devolución de llamada, el resultado de la devolución de llamada.
Valoraciones y comentarios
Si te mola el proyecto, tienes la libertad de dejar un ensayo acerca de qué le añadirías a esta crónica.