如何使异步回调得到同步处理

How to make an async call back get handled synchronously

我有一种情况,我在 gem 上调用异步处理的方法。我希望能够在调用方法的线程上继续执行之前等待回调被调用。

gem.async_method(args) do |result|
    # the callback
end
# wait until callback is called and then continue execution
puts result # somehow have access to the result from the callback

PubNub Ruby SDK http_sync

我认为您在 publishsubscribe' 等 PubNub 时只是在寻找 http_sync 参数。 https://www.pubnub.com/docs/ruby/api-reference-sdk-v4#publish_args

pubnub.publish(
    channel: 'my_channel',
    message: { text: 'Hi!' },
    http_sync: true
) do |envelope|
    puts envelope.status
end

我最终设法找到了解决方案。我使用的 gem 返回了 Celluloid::Future。如果你调用 future_object.value 它将阻止执行直到收到值。