0

エンドポイントへの GET 呼び出しを行うために使用node-rest-clientしていますが、この呼び出しを (ループで) 複数回行い、応答のパラメーターを公開したいと考えています。
コードは次のようになります。

// registering remote methods
client.registerMethod("reflect", "<the URL>", "GET");
// call the method
var i = 10;
while (i>0) {
    client.methods.reflect(function (data, response) {
        console.log("x-forwarded-for: " + data.headers["x-forwarded-for"]);
        // raw response
        //console.log(response);
      });
    i--;
}

私が得るエラーは次のとおりです。

TypeError: Cannot read property 'x-forwarded-for' of undefined

iが 2 に等しい場合、これで問題ありません。この問題は、これが非同期実行であり、while 内のすべての呼び出しが一度に起動され、行のどこかで詰まりが発生するという事実に起因していると思います。

同期実行を行う最良の方法は何ですか (これが問題の場所であると仮定します)。

4

1 に答える 1

0

まず最初に、応答に x-forwarded-for があることを確認してください。同じ問題が予想どおりに続く場合 (非同期呼び出し) は、この呼び出しを次のような無名関数内にラップするだけです。

while(i > 0) {
    (function abc(){
        client.methods.reflect(function (data, response) {
            console.log("x-forwarded-for: " + data.headers["x-forwarded-for"]);
            // raw response
            //console.log(response);
        });
    }())

    i--;
}
于 2016-09-28T14:27:03.850 に答える