module Q

Constants

VERSION

Public Class Methods

defer(&block) click to toggle source
# File lib/q.rb, line 7
def self.defer(&block)
  defer = Q::Defer.new

  block.call(defer)

  defer.promise
end
when(promises) click to toggle source
# File lib/q.rb, line 15
def self.when(promises)
  defer = Q::Defer.new

  @results = []

  promises.each do |promise|
    promise.then do |result|
      @results << result
      defer.resolve(@results) if @results.length == promises.length
    end.fail do |result|
      defer.reject([result, @results])
    end
  end

  defer.promise
end