2012-12-02 2 views
1

NodejS에는 매우 까다로운 작업이 있지만 초보자는 있습니다.NodeJS + jsDom 동기화 호출

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 개념의 작동되지 않고 있습니다. 누군가 실제 생활에 어떻게 접근 할 지 조언 해 줄 수 있습니까?

답변

0

이에 대한 async.eachSeries()를 사용한다. 루프에서 실행해야하는 비동기 코드가 있으면 항상 비동기 라이브러리를 사용해야합니다.