Jquery NodeJS+jsDom同步调用

Jquery NodeJS+jsDom同步调用,jquery,node.js,asynchronous,web,Jquery,Node.js,Asynchronous,Web,我有一个相当棘手的任务,但新手在NodeJS 所以我需要在URL数组上循环,从数组中获取每个页面,通过jsdom+jquery传递它,并在数组的末尾添加新的查找URL 乍一看,这个任务相当简单,但由于NodeJS的异步性,它变成了一场噩梦 现在我有了简化的代码,以便更好地理解 var jsdom = require("jsdom"); var fs = require("fs"); var jquery = fs.readFileSync("./jquery.js").toString();

我有一个相当棘手的任务,但新手在NodeJS

所以我需要在URL数组上循环,从数组中获取每个页面,通过jsdom+jquery传递它,并在数组的末尾添加新的查找URL

乍一看,这个任务相当简单,但由于NodeJS的异步性,它变成了一场噩梦

现在我有了简化的代码,以便更好地理解

var jsdom = require("jsdom");
var fs = require("fs");
var jquery = fs.readFileSync("./jquery.js").toString();

var fields = ['http://some.url/page.html']

for(var b=0, len = fields.length;b<len;b++){

jsdom.env({
      html: fields[b],
      src: [jquery],
      done: function (errors, window) {
            var $ = window.$;
            $("div.pager a").each(function() {
                //Push new finded hyperlinks in array
              fields.push($(this).attr('href'));
            });

        }
    });
    //recalculate actual length of array to make more loop
    len=fields.length;
}
当然,由于NodeJS的概念,它的构建是不可行的。
有人能建议如何把它变成现实吗

我很清楚地建议你花点时间和lern异步行为,这是一种没有it节点的能力。js没有任何意义。粘贴的代码错误有几个原因

Plz,看看我的链接爬虫的实现,我做的宠物项目。锄它有帮助


为此,应使用async.eachSeries。当您有需要在循环中运行的异步代码时,应该始终使用异步库