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

Lo prometido es deuda

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

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
Tweet

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