Mojo::EventEmitter - イベントエミッターの基底クラス
使い方
package Cat; use Mojo::Base 'Mojo::EventEmitter'; # イベントの発行 sub poke { my $self = shift; $self->emit(roar => 3); } package main; # イベントの購読 my $tiger = Cat->new; $tiger->on(roar => sub { my ($tiger, $times) = @_; say 'RAWR!' for 1 .. $times; }); $tiger->poke;
説明
Mojo::EventEmitterはイベント発行オブジェクトのためのシンプルな基底クラスです。
イベント
Mojo::EventEmitterは次のイベントを発行します。
error
$e->on(error => sub { my ($e, $err) = @_; ... });
これは、エラーのための特別なイベントで、このクラスからは直接に発生しませんが、処理できない場合は、致命的になります。サブクラスは、発生させるかもしれませんが、必要不可欠ではありません。
$e->on(error => sub { my ($e, $err) = @_; say "This looks bad: $err"; });
メソッド
Mojo::EventEmitterはMojo::Baseからすべてのメソッドを継承しており、 次の新しいメソッドを実装しています。
catch
$e = $e->catch(sub {...});
error
イベントを購読します。
# Longer version $e->on(error => sub {...});
emit
$e = $e->emit('foo'); $e = $e->emit('foo', 123);
イベントを安全に発行し、失敗した場合はerror
イベントを発行します。
has_subscribers
my $bool = $e->has_subscribers('foo');
イベントが購読者を持っているかをチェックします。
on
my $cb = $e->on(foo => sub {...});
イベントを購読します。
$e->on(foo => sub { my ($e, @args) = @_; });
once
my $cb = $e->once(foo => sub {...});
イベントを購読し、一度だけイベントが発行された後に、購読をやめます。
$e->once(foo => sub { my ($e, @args) = @_; });
subscribers
my $subscribers = $e->subscribers('foo');
イベントのすべての購読者。
# 最後の購読者の購読をやめる $e->unsubscribe(foo => $e->subscribers('foo')->[-1]); # 購読者の順序を変える @{$e->subscribers('foo')} = reverse @{$e->subscribers('foo')};
unsubscribe
$e = $e->unsubscribe('foo'); $e = $e->unsubscribe(foo => $cb);
イベントの購読をやめます。
デバッグ
MOJO_EVENTEMITTER_DEBUG
環境変数を設定すれば、 より進んだ詳細な情報をSTDERR
に出力することができます。
MOJO_EVENTEMITTER_DEBUG=1
参考
Mojolicious, Mojolicious::Guides, http://mojolicio.us.
(Mojolicious 8.12を反映。2019年5月14日更新)