LoginSignup
3
3

More than 5 years have passed since last update.

Promise ラッパーを NPM に登録してみた。

Last updated at Posted at 2016-01-10

追記: ジェネレーターの勉強してる時、tj/node-thunkify を見つけたけど、当然ながら、こっちの方がよっぽど洗練されててまともな実装です。thunkify を激しくお勧めしておきます。余裕できたら、thunkify に寄せてみたい。

世間では MSIE 8,9,10 の終焉 で賑わっていますが、最近まで MSIE 6 相当の IEMobile や BlackBerry OS 5 向けの対応などをやっていまして、Promise には大変お世話になりました。

FRP をガリガリやりたいなーと思う反面、どうしても旧世代端末のハナシが出た時は Promise は手堅いので、一段落したところで、モジュール化して npm に登録してみました。

主に以前書いた上記記事を汎用化したモノで、Promisr と命名しました:

tl;dr

プロミス処理のラッパーをつくる。 - Qiita で書いた promisify という関数で、jQuery の Deferred オブジェクトをコードのあちこちに書き散らかす状態を脱しました。モジュール化に当たっては、jQuery Deferred だろうが Q だろうが ES2015 の Promise だろうが、同じ promisify 関数を元に、Promise の実装をできるようにしました。

var promisr = new Promisr(window.Promise || window.Q || window.jQuery);
var done = promisr.promisify(function (resolve, reject, value) {
  if (value) return resolve(value);
  reject(value);
});

基本は上記の通りです。Promisr をインスタンス化する時の引数に Promise, Q, jQuery のどれかを渡す事で、指定のライブラリを元に promisify 関数をつくります。

あとはこの promisify の実装を元に、自分がよく使う Promise 処理のショートハンドをメソッドで生やしています。

詳しくは雑な API ドキュメントに列挙しています:

Node.js で使う場合は;

npm install --save promisr
var Promisr = require('promisr');

ブラウザで使う場合は;

<script src="https://npmcdn.com/promisr@0.3.1/dist/promisr.min.js"></script>
var Promisr = window.Promisr;

みたいな感じで呼び出せます。

これで Promise 必要になった時に、古いソースコード漁らなくてよくなりました! うれしい。

心置きなく FRP の勉強に移行できそう。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3