Promise.pm

Promise (Perl)

[3] Promise.pm は、 Perl 用の promise の実装です。

API

[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 を得ることができます。

AnyEvent との関係

[11] Promise.pm 自体は API を提供するだけなので、別途イベントループが必要です。 既定の状態では、 AnyEvent を使っています。

[12] そのため Promise.pm を利用するには use AnyEvent できる状態にしておくか、 別のイベントループの Perlモジュールを使うように指定する必要があります。

応用

[13] Promised

メモ

[1] Perl で Promise - Qiita [キータ] ( 版) https://qiita.com/wakaba@github/items/5f7ef32c0dd5172dfeed