Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Lo prometido es deuda

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

Lo prometido es deuda

ENLACES CLICKABLES! DESCÁRGATE LA PRESENTACIÓN PARA VER LA DOCUMENTACIÓN, EJEMPLOS...

Sincronización de procesos asíncronos y suscripción tardía de eventos mediante promises en JavaScript con when.js

[Versión en español]

Avatar for David Iglesias

David Iglesias

November 17, 2012

More Decks by David Iglesias

Other Decks in Programming

Transcript

  1. ¿Cómo funciona? • Eventos ◦ "Las cosas que pasan" •

    Manejadores / Callbacks ◦ La reacción a los eventos
  2. Ejemplillo class Balumba extends CarInsurance { - handleDone (price) {

    fire('done', Balumba, price); } + computePrice (carModel, age, gender) { BalumbaServer.on('done', handleDone); BalumbaServer.on('error', handleError); BalumbaServer.request(carModel, age, gender); } }
  3. Complicándonos la vida class Rastreator { - providers = [

    Balumba, Genesis, Verti, ... ]; - handleProviderDone(provider, price) {} + computePrice (carModel, age, gender) { foreach (providers as provider) { provider.on('done', handleProviderDone); provider.computePrice(carModel, age, gender); } // When all providers are done, show them } }
  4. ¡No problemo! • Promises (AKA Future / Delay / Deferred)

    ◦ Propuestas en 1976-77 ◦ Implementadas en: ABCL/f, AmbientTalk, Io, Lucid, Oxygene, Oz, R, Scheme...
  5. Deferred (when.js) • Eventos "con memoria" • Divididos en 2

    partes ◦ Promise (maneja las suscripciones a eventos) ◦ Resolver (decide si la Promise se resuelve/rechaza) • Sincronización ◦ all, any, some • Pipelining ◦ chain