2014-05-09 3 views
0

내 앱은 프록시 목록을 검색합니다. 죽은 프록시가있을 때 오류 이벤트가 호출되지만 콜백 또는 끝 이벤트가 호출되지 않습니다. 이유는 무엇입니까?오류 이벤트 발생 후 계속 Node.js 웹킷

var file = e.dataTransfer.files[i].path; 
    content = fs.readFileSync(file, "UTF-8"); 
    var lines = content.split("\n"); 
    var nb = 0; 
    async.each(lines, function(line, callback) { 

     var arr = line.split(":"); 
     http.get({host: arr[0], port: arr[1], path: "http://www.google.fr", agent: false}, function(res, req) { 
      if(res.statusCode == 200){ 
       el.className = ''; 
       el.innerHTML = arr[0] + ':' + arr[1] + '\n'; 
       nb = nb+1; 
      } 
      callback(); 
     }).on('error', function(e) { 
      console.error(arr[0] + ':' + arr[1]); 
     }).on('end', function(e) { 
      console.error('End event nerver load...'); 
     }); 
    },function(){ 
     el.className = ''; 
     el.innerHTML = 'Scan terminé. ' + nb + ' Proxy fonctionnels'; 
    }); 

답변

2

비동기 라이브러리를 사용하고있는 것 같습니다.

async.each으로 전달한 반복기에 오류가 있는지 여부에 관계없이 콜백을 호출해야합니다. 콜백을 호출하지 않으면 async는 작업이 아직 실행 중이며 영원히 기다릴 것이라고 가정합니다.

오류가 발생하면 콜백을 호출하고 오류를 첫 번째 매개 변수로 전달해야합니다.

그래서 여기에 제가 의미하는 바가 있습니다. 오류 이벤트 처리기에 callback(e);을 추가했습니다.

}).on('error', function(e) { 
     console.error(arr[0] + ':' + arr[1]); 
     callback(e); 
    }).on('end', function(e) { 
+0

감사합니다.하지만 콜백을 호출하면 각 루프가 중단됩니까? 나는 오류가 있어도 반복을 계속하고 싶다. 내가 중지하기 전에 파일의 각 IP를 구문 분석하고 싶습니다 – Pixel

+0

이것은 async.each가 작동하는 방법입니다. – Mikuso

+0

에러시 종료하지 않고 계속 반복하려면 오류없이 콜백을 호출하면됩니다. 'callback();' – Mikuso

관련 문제