링크가 활성 상태인지 확인하기 위해 URL을 반복 실행하기 위해 async.forEach를 사용하고 있습니다.Nodejs Async Js : async.forEach 및 async.map을 사용하여 URL 유효성 확인
newLinks가 {는 www.google.com, www.nourl.com, www.xyz.com} 나는 모든 요청을 처리 한 후 같은 기대하고 , 내가 함수가 실행하려는 같은 링크가 포함되어 있습니다, "Async Done"이 인쇄됩니다.
그러나 콘솔이 아래의 결과를주고있다 : 다음, "www.google.com이 다", "비동기 완료" "다음 "완료 "를 funally 두 개의 링크 을 www.nourl.com 최대입니다 "그리고 "www.xyz.com is up "
기본적으로 여기에서 첫 번째 URL 요청 후 아래 코드는 비동기 루프 외부에서 함수를 실행하고 있습니다. async는 모든 URL의 유효성을 검사 한 후에 만 다음 코드를 실행할 수 있다고 생각했습니다.
async.forEach(webservicelinks, function(url, callback) {
var Url = "url";
var newLink = newLinks[0];
var proxiedRequest = request.defaults({'proxy': Url});
proxiedRequest(url , function (error, response, body) {
if(error){
console.log('Err: '+ error);
}
if (!error) {
if(response.statusCode == 200 || response.statusCode == 201 || response.statusCode == 202){
console.log(url + ' is up!!');
newLink.isActive = true;
}
if(response.statusCode == 301 || response.statusCode == 302){
console.log(url + ' is redirecting us!!');
return false;
}
if(response.statusCode == 401){
console.log("you are unauthorized to " + link);
return false;
}else if (!(response.statusCode == 200 || response.statusCode == 201 || response.statusCode == 202)){
console.log(url + ' is down!!');
}
}
});
callback();
} , function(err, newLinks) {
console.log ("Async Done") ;
});
console.log ("Done") ;
});
감사합니다.하지만 validateLink 메소드에서 url 및 cb 이외의 다른 매개 변수는 어떻게 전달합니까? 마찬가지로 linkDataList (linkUrl 및 linkStatus가 포함 된 linkData -> 배열로 전체 목록을 전달하려는 경우 linkUrl이 작동하면 true로 설정하려면 linkStatus를 원할 때)? – Amal
개체를 전달할 수 있습니까? 나는 그 대답을 편집했다. – Ozgur
안녕하세요, 마찬가지로,하지만 문제는 첫 번째 URL 만 유효성이 검사되고 나머지는 실행되지 않는 것과 같습니다. 이유를 모르겠다. – Amal