Sha256: 1781f719f1e527750ca35ecd0fa2e5e2dc0d4fed1f7764216c25d8acca10f249
Contents?: true
Size: 1.78 KB
Versions: 4
Compression:
Stored size: 1.78 KB
Contents
h1. Celluloid Promise !https://secure.travis-ci.org/cotag/celluloid-promise.png! A promise / deferred implementation for Celluloid inspired by "AngularJS":http://docs.angularjs.org/api/ng.$q / "Kris Kowal's Q.":https://github.com/kriskowal/q From the perspective of dealing with error handling, deferred and promise apis are to asynchronous programing what try, catch and throw keywords are to synchronous programming. <pre><code class="ruby"> require 'rubygems' require 'celluloid-promise' def asyncGreet(name) deferred = Celluloid::Q.defer Thread.new do sleep 10 deferred.resolve("Hello #{name}") end deferred.promise end asyncGreet('Robin Hood').then(proc { |greeting| p "Success: #{greeting}" }, proc { |reason| p "Failed: #{reason}" }) asyncGreet('The Dude').then do |greeting| p "Jeff '#{greeting}' Lebowski" end </code></pre> h2. Start using it now # Read the "Documentation":http://rubydoc.info/gems/celluloid-promise/Celluloid/Promise # Then @gem install celluloid-promise@ h2. Use case Celluloid provides a toolkit for building concurrent applications however coordinating complex chains of concurrent events can be difficult. Celluloid-Promise provides the following: * allows you to track a mash up of events across Actors * guarantees serial execution of callbacks * callback chains are spread across multiple threads ** So multiple promise chains can be executed concurrently Of course passing blocks around is a fairly "dangerous exercise":https://github.com/celluloid/celluloid/wiki/Blocks#proposal-for-fixing-blocks, so do the following and you'll be safe * use Celluloid-Promise for flow control * resolve and reject promises with locally scoped variables * call Actor methods to change state or class variables
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
celluloid-promise-1.0.3 | README.textile |
celluloid-promise-1.0.2 | README.textile |
celluloid-promise-1.0.1 | README.textile |
celluloid-promise-1.0.0 | README.textile |