Class: Dommy::Bridge::PromiseConstructor

Inherits:
Object
  • Object
show all
Defined in:
lib/dommy/bridge.rb

Overview

JS.global[:Promise] view. Implements the resolve / reject class methods plus new Promise(executor) via __js_new__.

Instance Method Summary collapse

Constructor Details

#initialize(window) ⇒ PromiseConstructor

Returns a new instance of PromiseConstructor.



199
200
201
# File 'lib/dommy/bridge.rb', line 199

def initialize(window)
  @window = window
end

Instance Method Details

#__js_call__(method, args) ⇒ Object



203
204
205
206
207
208
209
210
# File 'lib/dommy/bridge.rb', line 203

def __js_call__(method, args)
  case method
  when "resolve"
    PromiseValue.resolve(@window, args[0])
  when "reject"
    PromiseValue.reject(@window, args[0])
  end
end

#__js_new__(args) ⇒ Object

new Promise(executor) — runs executor synchronously with (resolve, reject) callbacks.



214
215
216
217
218
219
220
221
222
223
224
225
226
# File 'lib/dommy/bridge.rb', line 214

def __js_new__(args)
  executor = args[0]
  promise = PromiseValue.new(@window)
  resolve = PromiseSettler.new(promise, fulfilled: true)
  reject = PromiseSettler.new(promise, fulfilled: false)
  if executor.respond_to?(:__js_call__)
    executor.__js_call__("call", [resolve, reject])
  elsif executor.respond_to?(:call)
    executor.call(resolve, reject)
  end

  promise
end