Node.js中的Javascript for循环闭包问题

时间:2015-01-21 12:09:58

标签: javascript node.js for-loop scope closures

我正在尝试创建一个节点应用程序,该应用程序通过使用JSON文件中的URL密钥,根据某些URL的存在动态生成站点地图。但是由于JavaScript关闭,我正在循环正确的问题,并且似乎只能一遍又一遍地重新打印数组的最后一个值。

我一直在研究在线for循环中的闭包,但似乎找不到任何与我的应用程序相关的需要在循环内提​​交请求的示例。

var request = require("request");


request({
json: true
}, function (error, response, body) {

    for (i = 0; i < 5; i++) { 
        var key = [i];

        console.log("before the request, i is " + key)

        request('www.example.com/product/' + key, function (err, response) {
            console.log ("I've checked " + key);
            //if the product page does exist
            if (response.statusCode === 200) {
                    //print the product URL
                    console.log ("I'm printing " + key);
                    }
            //if the product doesn't exist it does nothing
            else
                {   
                }
    })}

});

目前正在打印的是:

  在请求之前,我是0
  在请求之前,我是1   在请求之前,我是2
  在请求之前,我是3
  在请求之前,我是4
  我检查了4
  我打印4
  我检查了4
  我打印4
  我检查了4
  我打印4
  我检查了4
  我打印4
  我检查了4
  我正在打印4个

我想要打印的是:

  在请求之前,我是0
  我检查了0
  我打印0
  在请求之前,我是1   我已经检查过1   我正在打印1   在请求之前,我是2
  我检查了2
  我正在打印2   在请求之前,我是3
  我检查了3
  我打印3
  在请求之前,我是4
  我检查了4
  我正在打印4个

如果有人能让我知道我如何使用新的示波器以使这个循环正常工作我会很感激,我现在​​已经对此感到头疼了。

0 个答案:

没有答案