2

フロー制御に使用できる js ライブラリがいくつかあります。

ただし、クロージャーコンパイラーを使用する場合、私が見たものはまだ高度なモードのコンパイラーではうまく機能しません。

クロージャと互換性のあるフロー制御ライブラリはありますか? コードを必要以上に複雑にすることなく、複数の結果を待つことに主に関心があります。

アーカイブしたいのは、ユーザー アクションの読み込み時間を短縮することです。ユーザーの 1 つのアクションに対して、バックエンドに対して複数の要求を実行する必要があります。コードを維持しやすくするために、現時点では、一度に 1 つのリクエストを実行し、各ステップの後で潜在的なエラーを処理しています。

アーカイブしたいのは、必要以上にエラー処理を複雑にすることなく、依存しないリクエストをまとめて起動できることです。

フロー js の構文が好きです。

var auth = flow.define(
    function(username, password) {

        sys.puts("trying " + username + ", " + password);

        this.password = password;
        keystore.get('userId:' + username, this);

    },function(err, userId) {

        keystore.get('user:' + userId + ':password', this);

    },function(err, passwordInDb) {

        if (passwordInDb == this.password) {
            sys.puts("Authenticated!");
        }
        else {
            sys.puts("Failed Authentication!");
        }
    }
)

また、複数の非同期操作を生成して収集することもできます。ただし、コールバック間の状態が必要な場合、状態は上記の「this.password」のように保存されます。包含スコープが型指定されていないため、ADVANCED モードの場合、クロージャ コンパイラは (私の理解では) 一貫して名前を変更できません。

したがって、各関数を介してパラメーター (または this) としてプッシュされる型指定されたコンテナー オブジェクトを持つ代替が必要です。

4

4 に答える 4

1

goog.async.DeferredClosure Libraryから利用できますか?非同期および同期ワークフローを管理します。

于 2012-11-19T04:54:03.753 に答える
0

わかりました私は解決策を見つけました。

型指定されたコンテナ オブジェクトを作成し、goog.bind を使用して各関数に渡すと、機能します。

于 2012-09-19T21:52:52.407 に答える
0

私が書いた Closure Library の非常に小さなフロー制御ライブラリはready.jsです。

説明によると:

複数の非同期操作を監視し、すべてまたは一部が完了したときにリスナーをトリガーします。

一見の価値あり

于 2013-01-21T11:13:49.883 に答える
0

一般に、ライブラリの extern ファイルを作成し、コードを個別にロードする (またはコードのコンパイル後にライブラリを連結する) ことにより、Closure Compiler の高度なモードで任意のライブラリを使用できます。

于 2012-09-19T21:36:57.517 に答える