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.



91
92
93
# File 'lib/dommy/bridge.rb', line 91

def initialize(window)
  @window = window
end

Instance Method Details

#__js_call__(method, args) ⇒ Object



95
96
97
98
99
100
101
102
# File 'lib/dommy/bridge.rb', line 95

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.



106
107
108
109
110
111
112
113
114
115
116
117
118
# File 'lib/dommy/bridge.rb', line 106

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