如何使异步回调得到同步处理
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
我认为您在 publish
、subscribe
' 等 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
它将阻止执行直到收到值。
我有一种情况,我在 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
我认为您在 publish
、subscribe
' 等 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
它将阻止执行直到收到值。