nodejs学習ノート2:閉パッケージと非同期プログラミング


何のつもりだ?
閉パッケージは関数ですが、それ自体が宣言された役割ドメインの変数を継承してアクセスできます.あるコールバック関数をパラメータとして別のi/o操作を行う関数に渡すと、コールバック関数は後で呼び出されます.不思議なことに、コールバック関数は自身が宣言したコンテキストを覚え、そのコンテキストとその親コンテキストのすべての変数にアクセスすることができます.この強力な特性はノードの成功の核心です.
簡単なjqueryの例を挙げます.
    (function(){
        var clickCount=0;
        $('button#mybutton').on('click',function(){
            clickCount++;
            alert('Clicked '+clickCount+' times.');
        });
    })();

閉パケットを用いるもう一つの利点は,変数がグローバル空間を汚染することを防止することである.
閉パッケージはどのように非同期プログラミングを補助します
イベント駆動プログラミングを行う場合は、イベント発生時に実行されるコードを定義してから、コードを関数に挿入し、最後にその関数をパラメータとして渡して後で呼び出す準備をします.
JavaScriptでは、関数操作は孤立して動作するのではなく、その宣言時に存在するコンテキストと親コンテキストに存在するすべての変数を操作できるように、そのコンテキストがいつ存在するかを覚えます.
コールバック関数をパラメータとして渡すと、少しの時点で呼び出されますが、コールバック関数を宣言した役割ドメインが戻ってきたとしても、コールバック関数はその役割ドメインまたは親役割ドメインの任意の変数を操作することができます.上記の最後の例では、コールバック関数はjqueryのclick関数の内部で呼び出されますが、しかし、clickCount変数にアクセスまたは操作できます.
これは、閉パケットモードを適用することで、2つの面から大きなメリットを得ることができることを示している:1.イベント駆動プログラミングは、維持することなく、状態変数を関数に渡すことによって行うことができる.JavaScriptの閉パッケージはステータス変数を維持します