节点js-HTTP请求无法按预期循环运行

时间:2018-11-05 09:47:48

标签: node.js loops asynchronous

我有这段代码,我想通过不同的链接进入其中并获取有关HTML代码的信息。

var request = require("request");
var components = ["componentName1", "componentName2", "componentName3"];

for(let i = 0; i < components.length; i++) {

request('http://www.examplesite.com/' + components[i] + '/tags/', function (err, resp, body) {

    if (!err && resp.statusCode == 200) {

        var versions = body.match(/(\d+\.)(\d+\.)(\*|\d+)/g);
        console.log(versions);

    } else {
        console.log("Error: " + resp.statusCode);
        if(err) console.log(err);
    }

});

}

问题是循环在所有请求完成之前完成,因此循环不会获取有关不同html页面的信息,而是收集有关一页乘以components.length的信息。我知道这很可能是异步执行函数的问题,我已经阅读了文档,尝试了promise和counter,但仍然无法使其正常工作。我想念什么吗?

0 个答案:

没有答案