[3] Promise.pm は、 Perl 用の promise の実装です。
[4]
Promise.pm
は ECMAScript で規定される JavaScript の
Promise
(JavaScript) を、 Perl で利用可能とするための最低限の変更を加えて移植したものです。
[5]
use Promise
することで、
Promise->new
,
Promise->resolve
,
Promise->reject
,
Promies->all
,
Promise->race
といった API が JavaScript 同様の形で使えるようになります。
[6] また Promise
オブジェクトには
then
や
catch
のようなメソッドがあります。
[7]
加えて、 JavaScript の Promise
同様に、
then
メソッドを実装した任意の (Promise.pm
以外の) オブジェクトを
promise として混在させることもできます。
[8]
Perl 独自 API として、
AnyEvent
の CondVar との相互変換のメソッドがあります。
[9]
$promise = Promise->from_cv ($cv)
で、 CondVar から
recv
した時に履行される約束を得ることができます。
[10] $cv = $promise->to_cv
で、
約束が履行された時にその値を send
する CondVar を得ることができます。
[11]
Promise.pm
自体は API を提供するだけなので、別途イベントループが必要です。
既定の状態では、 AnyEvent を使っています。
[12]
そのため Promise.pm
を利用するには use AnyEvent
できる状態にしておくか、
別のイベントループの Perlモジュールを使うように指定する必要があります。
[1] Perl で Promise - Qiita [キータ] ( 版) https://qiita.com/wakaba@github/items/5f7ef32c0dd5172dfeed