2016-06-27 3 views
-1

私はhttp.request()。end()をコールし、変数をコールバック関数に渡す必要があります。ノードJSでは、http.requestコールバックに変数を渡す方法は?

どうすればよいですか?

私の状況では、ユーザーがサーバーにアクセスし、サーバーからHTTPリクエストがAPIに送信され、サーバーはそのユーザーにHTTPリクエストから返された情報で応答する必要があります。グローバル変数を使用せずにこれを行う方法を理解できません.2人で同時に実行すると、両方のメッセージが同じユーザーに送信されます。

それは助けるが、ここで私がやろうとしているようなもの何でしょう..

callback = function(response){ 
    //... 
    respondToUser(userId); 
} 

function doStuff(userId){ 
    http.request({host:'www.google.com'}, callback).end(); 
} 
+0

のようにコードを表示する。 –

+0

* "グローバル変数を使用せずにこれを行う方法を見つけられません..." *グローバル変数は不要で、 'request'コールバックが終了します。コードを表示すると、私たちはそれを手伝うことができます。 –

+0

コールバックとして無名関数を使用しない場合は、簡単に必要なものだけを渡すことができます。 – master565

答えて

0

は、それはあなたが書いている機能を持つコンテキストを維持している「閉鎖」と呼ばれ、この

function doStuff(userId){ 
    var callback = function(response){ 
     //... 
     respondToUser(userId); 
    } 

    http.request({host:'www.google.com'}, callback).end(); 
} 
+0

私はこれを考えましたが、この種の動作をするために必要ないくつかの異なる機能があり、コードを数回解析することはおそらく大きな解決策ではありません。これが唯一の解決策であれば、おそらくすべての機能を組み合わせることができると思います。 – user2322082

+0

あなたはおそらく、JavaやC++のような手続き型プログラミング言語(JavaScriptのような関数型言語でコードを構造化する方法)で動作するように、あなたのコードを整理しているでしょう。 – Soren

+0

ええ、あなたはおそらく右。私はすべての関数をコールバック内のより複雑な関数にするように書き直しました。答えに感謝します – user2322082

関連する問題