BMEANスタックというのは、BreezeJS, MongoDB, Express, AngularJS, Node.jsを使ったソフトエアスタックのことです。
Breezeを簡単に使いたいと思って、social-cms-backendを大幅に改修しました。 APIは変わっていないのですが、breeze-mongodbを使えるように工夫しました。反面、処理が複雑になりオーバヘッドが増えています。
その新しいsocial-cms-backendを使う段階で一つ気づいたことがあるので、メモ代わりに書いておきます。詳細は省きますが、クライアントサイドのコードでpromiseを使いたくなりました。そもそも、BreezeのAPIがpromiseを返します。Angularにも$qというのがあってpromiseが使えます。
ところが、Breezeのpromiseのメソッドが、
promise.then()
promise.fail()
promise.fin()
なのに対して、Angularの方は、
promise.then()
promise.catch()
promise.finally()
になっているのです。ちなみに、catch,finallyはjsBeautifierでは予約語とみなされて不便です。
wrapすればいいだけですが、なんとなく不満でした。それだけです。
Angularは、https://github.com/kriskowal/qをもとにしているとドキュメントに書いてありますが、どうしてメソッド名を変えたのでしょう。きっと、なにか理由があるのだとは思いますが、読み取れなかったです。
タイトルにある「困った」はこの事実にしばらく気づかず、コーディングではまってしまった、ということでした。
2/16追記。
q.jsのソースコードを読んでいたら、catch,finallyも一応サポートされていました。いずれにしても常に、thenだけを使っておくほうが安心な気がします。
コメント