Koaフレームワークを使用してノードJSのWebアプリケーションを作成しています。IntelliJまたはWebStormのジェネレータを使用してJSをデバッグする方法を改善する
すべてのフロー制御は、コールバックの代わりにジェネレータを使用して行われます。実際のフローはそうではありませんが、コードはシーケンシャルに見えます。とにかく、それはコールバック地獄よりもはるかにきれいに見えます。
function *findUserById(userId)
{
var user = yield getUserOrError404(userId);
yield loadAdditionalData(user);
yield data.users.save(user);
return user;
}
Howeve 1つの難点がある:非常にうまく機能しません、私のIDEでyield
S(のIntelliJ IDEA)でコードのステップは
はここKOAと書かれたコントローラ機能の簡単な例です。実行がyield
ステートメントの行に来たら、私はちょうど "ステップオーバー"すれば、実行フローがスタック上でkoaコードになります(実際にはジェネレータの実際の実行フロー、yield文とNodeイベントループ)。
現在、次の文にブレークポイントを設定する必要があります。デバッガを一時停止し、頻繁に次の行にして、[プログラムの再開]ボタンをクリックします。
2つ以上のyield文があると面倒になることがあります。
yieldステートメントを「通常の」シーケンシャルステートメントのように進めることができるジェネレータ重いJSコードをステップ実行するための良い方法(トリック、プラグイン、など)はありますか?
これは、すでにブレークポイントメソッドよりも大幅に改善されています。ありがとうございました !私はジェネレータ呼び出しを透過的に踏み越えるよりエバリュエートな「エミュレーション」メソッドが必要だったと思います。私はちょっと待つつもりだ、誰かがそのような魔法を思い付くかもしれない。そうでなければ、私はこの答えを受け入れるだろう。 –
ああ、通常のデバッグセッションにも便利です) –
IntelliJのようなツールでは、yieldステートメントを透過的に実行できる「ジェネレータ対応」デバッグモードがあります。 –