このページの内容

Awesome Promises

Promisesを扱う資料や関連プロジェクトをまとめたAwesomeリストです。

リソース、ブログ、書籍

初心者向け

詳細解説

リファレンス

Promises/A+実装(ES6/ES2015互換)

厳密な実装

これらはes6仕様を過不足なく実装します。優れたpolyfillであり、ネイティブPromiseと非常に高い互換性があります。

  • pinkie - Ponyfill。Node指向ですがbrowserify可能非常に小さな実装。
  • native-promise-only - Polyfill。ブラウザー・node互換。
  • es6-promise - オプトインpolyfill。rsvp.jsの厳密仕様サブセット。
  • lie - 小型でbrowserify可能、オプトインpolyfillを備えます。

追加機能を持つ実装

これらは言語仕様より多くの機能を提供しながら互換性を保ちます。すべてNodeとブラウザーに対応します。

  • bluebird - 完全機能で非常に高性能。長いスタックトレースとジェネレーター/コルーチンサポート。
  • creed - Bluebirdのように高性能・フル機能ですがFP指向。コルーチン、ジェネレーター、Promise、ES2015 iterable、fantasy-land仕様を備えます。
  • rsvp.js - 少数の追加機能を持つ軽量実装。IE6まで互換。
  • Q - 最初期の実装の一つ。長いスタックトレースなどを提供。
  • then/promise - nodeifydenodifydone()を追加した小さな実装。
  • when.js - 制御フロー、関数型、ユーティリティメソッドを豊富に備えます。

フォールバック

  • native-or-bluebird - 完全ネイティブ実装への移行を助けます。
  • pinkie-promise - ネイティブを使うか、pinkieへフォールバック。nodeライブラリ作者に最適。
  • any-promise - 最初に利用可能な実装を読み込みます。browserifyで安全。

便利なユーティリティ

ネイティブで厳密な仕様準拠のPromiseは、互換性、将来性、ライブラリ作者、ブラウザーのために優れています。しかしbluebirdのようなライブラリは、Promiseコンストラクターとプロトタイプに便利な機能を追加します。解決策は小さなモジュールです。

sindresorhusの多数のPromiseユーティリティ(メモを見る

  • delay - 指定時間だけPromiseを遅延。
  • pify - コールバック形式の関数をPromise化(「denodify」)。
  • loud-rejection - 未処理Promise拒否を既定の静かな失敗でなく大きく失敗させる。
  • hard-rejection - 未処理Promise拒否を既定の静かな失敗でなく直ちに厳しく失敗させる。
  • p-queue - 並行制御を持つPromiseキュー。
  • p-break - Promiseチェーンから抜ける。
  • p-lazy - .then()または.catch()が呼ばれるまで実行を遅延するlazy Promiseを作成。
  • p-defer - deferred Promiseを作成。
  • p-if - 条件付きPromiseチェーン。
  • p-tap - 値・状態へ影響せずPromiseチェーンへ介入。
  • p-map - Promiseを並行してmap。
  • p-all - Promiseを返す関数とasync関数を、任意の制限付き並行度で並行実行。
  • p-limit - Promiseを返す関数とasync関数を制限付き並行度で複数実行。
  • p-times - Promiseを返す関数とasync関数を指定回数、並行実行。
  • p-catch-if - 条件付きPromise catchハンドラー。
  • p-time - Promiseが解決に要する時間を測定。
  • p-log - Promiseの値・エラーをログ出力。
  • p-filter - Promiseを並行フィルター。
  • p-settle - Promiseを並行してsettleし、完了値または拒否理由を得る。
  • p-memoize - Promiseを返す関数とasync関数をメモ化。
  • p-whilst - 条件がtrueを返す間、関数を反復呼出ししてからPromiseを解決。
  • p-throttle - Promiseを返す関数とasync関数をスロットル。
  • p-debounce - Promiseを返す関数とasync関数をデバウンス。
  • p-retry - Promiseを返す関数またはasync関数を再試行。
  • p-wait-for - 条件がtrueになるまで待機。
  • p-timeout - 指定時間後にPromiseをタイムアウト。
  • p-race - より良いPromise.race()
  • p-try - Promise#try() ponyfill。Promiseチェーンを開始。
  • p-finally - Promise#finally() ponyfill。結果にかかわらずPromiseのsettle時に呼出し。
  • p-any - いずれかのPromiseがfulfilledになるまで待機。
  • p-some - 指定数のPromiseがfulfilledになるまで待機。
  • p-pipe - Promiseを返す関数とasync関数を再利用可能なパイプラインへ合成。
  • p-each-series - Promiseを直列に反復。
  • p-map-series - Promiseを直列にmap。
  • p-reduce - Promiseを使って値のリストを一つの値のPromiseへreduce。
  • p-props - Promise.all()に似ていますがMapObject向け。

その他

  • promise-method - 単独のbluebird.method。同期戻り値メソッドをPromiseを返すメソッドへ変換。
  • is-promise - 何かがPromiseらしいかを判定。
  • sprom - ストリーム終了時に解決。任意のバッファリング(注意してください)。
  • task.js - Promiseとジェネレーターを使い、ブロッキング風のスタイルでasync関数を記述。bluebird.coroutineに似ています。
  • co - task.jsbluebird.coroutineに似ていますが、thunkもサポート。
  • lie-fs - NodeのFS API向けPromiseラッパー。
  • promise-do-until - 条件がtrueを返すまで関数を反復呼出ししてからPromiseを解決。
  • promise-do-whilst - 条件がtrueを返す間、関数を反復呼出ししてからPromiseを解決。
  • promise-semaphore - 実行する作業セットを構成可能な直列方式でpush。
  • promise-nodeify - 解決または拒否時にNodeスタイルのコールバックを呼ぶ単独のnodeifyメソッド。

ライセンス

Creative Commons CC0 Licenseの下でライセンスされています。