module Delayer::Deferred::Deferredable::Awaitable

Public Instance Methods

+@() click to toggle source

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

# File lib/delayer/deferred/deferredable/awaitable.rb, line 9
def +@
  response = Fiber.yield(Delayer::Deferred::Request::Await.new(self))
  if response.ok?
    response.value
  else
    Delayer::Deferred.fail(response.value)
  end
end
enter_await() click to toggle source
# File lib/delayer/deferred/deferredable/awaitable.rb, line 18
def enter_await
  change_sequence(:await)
end
exit_await() click to toggle source
# File lib/delayer/deferred/deferredable/awaitable.rb, line 22
def exit_await
  change_sequence(:resume)
end