[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