Class: Dommy::Bridge::PromiseConstructor

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

Overview

JS.global` 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.



188
189
190
# File 'lib/dommy/bridge.rb', line 188

def initialize(window)
  @window = window
end

Instance Method Details

#__js_call__(method, args) ⇒ Object



192
193
194
195
196
197
198
199
# File 'lib/dommy/bridge.rb', line 192

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.



203
204
205
206
207
208
209
210
211
212
213
214
215
# File 'lib/dommy/bridge.rb', line 203

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