Module: Delayer::Deferred::Deferredable::Awaitable

Included in:
Chainable, Thread
Defined in:
lib/delayer/deferred/deferredable/awaitable.rb

Instance Method Summary collapse

Instance Method Details

#[email protected]Object

self が終了して結果が出るまで呼び出し側のDeferredを停止し、 self の結果を返す。 呼び出し側はDeferredブロック内でなければならないが、 _Deferred#next_ を使わずに 直接戻り値を得ることが出来る。 self が失敗した場合は、呼び出し側のDeferredの直近の trap ブロックが呼ばれる。


10
11
12
13
14
15
16
17
# File 'lib/delayer/deferred/deferredable/awaitable.rb', line 10

def [email protected]
  response = Fiber.yield(Delayer::Deferred::Request::Await.new(self))
  if response.ok?
    response.value
  else
    Delayer::Deferred.fail(response.value)
  end
end

#enter_awaitObject


19
20
21
# File 'lib/delayer/deferred/deferredable/awaitable.rb', line 19

def enter_await
  change_sequence(:await)
end

#exit_awaitObject


23
24
25
# File 'lib/delayer/deferred/deferredable/awaitable.rb', line 23

def exit_await
  change_sequence(:resume)
end