节点JS循环和回调

时间:2016-09-28 14:11:46

标签: node.js loops asynchronous node-rest-client

我正在使用node-rest-client对端点进行GET调用,并希望多次进行此调用(在循环中),然后公开响应的参数。
代码如下:

// 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中的所有调用都会立即被触发,导致某些地方出现堵塞。

进行同步执行的最佳方法是什么(假设这是问题所在?)

1 个答案:

答案 0 :(得分: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--;
}