Module: Whenner

Defined in:
lib/whenner.rb,
lib/whenner/promise.rb,
lib/whenner/version.rb,
lib/whenner/callback.rb,
lib/whenner/deferred.rb,
lib/whenner/conversions.rb

Defined Under Namespace

Modules: Conversions Classes: Callback, CannotTransitionError, Deferred, Promise, UnresolvedError, WhennerError

Constant Summary collapse

VERSION =
'0.1.1'

Class Method Summary collapse

Class Method Details

.defer {|deferred| ... } ⇒ Promise

Create a new deferred, resolve it in the block and get its promise back.

Yield Parameters:

Returns:



32
33
34
35
36
# File 'lib/whenner.rb', line 32

def defer
  deferred = Deferred.new
  yield deferred
  deferred.promise
end

.when(*promises) ⇒ Promise

Create a new deferred based that will resolve if/when the given promises are resolved. Use to combine multiple promises into a single deferred object.

When all the given promises are fulfilled, the resulting promise from when if fulfilled with an array of all the values. When one of the given promises is rejected, the resulting promise is rejected with that reason.

Parameters:

  • promises (Object)

Returns:



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/whenner.rb', line 48

def when(*promises)
  defer do |d|
    promises.each_with_object([]) do |promise, values|
      Conversions.Promise(promise).tap do |p|
        p.done  do |value|
          values << value
          d.fulfill(values) if values.size == promises.size
        end
        p.fail do |reason|
          d.reject(reason)
        end
      end
    end
  end
end