Promise

Promise (Perl)

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

API

[4] Promise.pmECMAScript で規定される JavaScriptPromise (JavaScript) を、 Perl で利用可能とするための最低限の変更を加えて移植したものです。

[5] use Promise することで、 Promise->new, Promise->resolve, Promise->reject, Promies->all, Promise->race といった APIJavaScript 同様の形で使えるようになります。

[6] また Promise オブジェクトには thencatch のようなメソッドがあります。

[7] 加えて、 JavaScriptPromise 同様に、 then メソッドを実装した任意の (Promise.pm 以外の) オブジェクトpromise として混在させることもできます。


[8] Perl 独自 API として、 AnyEventCondVar との相互変換のメソッドがあります。

[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