我有一个非常简单的设置来测试 rails3 ActiveSupport::Notifications
。通过阅读文档,该ActiveSupport::Notifications.subscribe
位应该异步执行它的操作。显然情况并非如此。
例子:
ActiveSupport::Notifications.subscribe "some.channel" do |name, start, finish, id, payload|
# do expensive task
sleep(10)
end
ActiveSupport::Notifications.instrument "some.channel" #=> will return 10 seconds later
我的印象是ActiveSupport::Notifications.instrument "some.channel"
会马上回来,让昂贵的任务去做昂贵的事情。否则我可以直接调用昂贵的任务,而不使用订阅者。
该文档还指出可能有多个订阅者。在那种情况下,我会被阻止,直到所有其他订阅者执行他们的代码。
这是正确的吗?如果是,有人可以解释一下http://api.rubyonrails.org/classes/ActiveSupport/Notifications.html中的这一行是什么意思吗?
The block will be called asynchronously whenever someone instruments “render”: