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

Lo prometido es deuda

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]

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