blog.bouzuya.net

2014-04-29 backlog-cli@0.2.0をつくった

というわけで、node-backlog-cliをバージョンアップ。意外と修正は小さくて、backlogだけでhelpを出したり、backlog issue statusを追加したくらい。これでぼくがやりたかったほかのことを実現できるので。

ちなみにつくる過程でPromises/A+を見直したら、いろいろと勘違いしていることに気づいた。

  1. deferじゃなくPromiseを使う。new Promise(function(resolve, reject) { ... });の方がES6対応が楽そう。var Promise = require('q').Promise;でOK。
  2. thenの戻り値はPromiseに変換される。例えばpromise.then(function() { return 1; });で1はPromiseでラップされ1でresolveされた値を返す。なので、return内容を気にせずthen().then()でOK。
  3. failよりcatch。基本はthencatchthenで成否両方または成功のみ、catchでエラーをとれる。donefailはないものと考える。
  4. thenの第2引数はハマりポイント。then(onFulFilled, onRejected)となるのだけれど、onFulFilledで例外を投げた場合はonRejectedは呼ばれない。例外はPromiseでラップされて返される。なので、thenの戻り値をcatch()で処理すれば良い。要するにpromise.then(onFullFilled).catch(onRejected)とするほうが安全。

これを踏まえて、今後のコードは意識してなおしていくつもり。

ちなみに、以下の記事が良い。翻訳記事。まどろっこしいかもしれないけど、実装を通じて学べる。念のため、英語のほうの仕様にあたったけど、問題なさそう。