[pyar] Equivalente a $.when()

Lucas rollbak en gmail.com
Dom Mayo 20 13:07:57 ART 2012


2012/5/19 Alejandro Santos <listas en alejolp.com>

> 2012/5/19 Martin Cerdeira <martincerdeira en gmail.com>:
> > Gente, como va? Para quienes conocen jQuery (dudo que alguien no lo
> > conozca) les sonará el método $.when() [0], a los que no,
> > básicamente[1] lo que hace es llamar a n funciones asincronicas
> > (generalmente) y, definirle callbacks, por ejemplo:
> >
> > $.when($.ajax("/page1.php"), $.ajax("/page2.php"))
> >   .then(myFunc, myFailure);
> >
> > La cuestión es, existe un equivalente en el mundo pythonero?
> >
>
> Uhm, hay un problema de semática, no termino de ver cómo querés
> traducirlo, desde JS a Python.
>
> En JS, cuando usás "ajax" estás haciendo una llamada asincrónica, y el
> browser se encarga de llamar al callback adecuadamente.
>
> En Python, ¿qué grupo de funciónes asincrónicas estás intentando invocar?
>
> Si, por otro lado, lo que estás buscando es llamar una serie de
> funciones, y tener alguna clase de notificación cuando ninguna de
> ellas dispare una excepción, eso se puede mas o menos así:
>
> >>> def whenThen(it, sucessCallback, failureCallback):
> ...     try:
> ...             for f in it:
> ...                     f()
> ...             sucessCallback()
> ...     except:
> ...             failureCallback()
> ...
>
> Fijate que es una variante de la función map() sin recibir los valores
> de la evaluación de las funciones (la doc de jQuery está un poco pobre
> en cuanto a qué reciben los callbacks).
>
>
> --
> Alejandro Santos
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>


Eso que usas en JQuery son promesas, lo que hace el when es devolver un
deferred al cual con el then le seteas un callback y un errback. En python
el framework mas conocido para hacer ese tipo de cosas es Twisted.

from twisted.web.client import getPage
from twisted.internet import reactor
d1 = getPage('http:/ <http://ooici.net/4-oh-four>page1.php')
d2 = getPage('http:/ <http://ooici.net/4-oh-four>page2.php') d =
defer.DeferredList([d1, d2])
d.addCallbacks(myFunc, myFailure)
reactor.run()

Enjoy!
-- 
Lucas
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20120520/b6567efd/attachment.html>


More information about the pyar mailing list