요청 메서드가 newLink 개체 (linkUrl 및 status 특성을 가진 newLink)의 요청 인 게시 메서드가 있습니다 async.map 링크가 활성화되었는지 여부를 확인하기 위해 내 URL을 반복 실행합니다.NodeJs : 요청 URL에 대해 비동기 사용 - 모든 URL을 실행하기 전에 응답을 보내는 게시 메서드
newLinks에는 {www.google.com, www.nourl.com, www.xyz.com}과 같은 링크가 포함되어 있습니다. 모든 요청을 처리하고 해당 상태를 true 또는 false로 설정하면 res.send (newLinks)를 사용하여 보내십시오.
그러나 콘솔은 "www.google.com is up"이고 res.send()를 호출 한 다음 "www.nourl.com is up" 및 "www.xyz.com 최대"
그래서 기본적으로 여기에 첫 번째 URL 요청 후 아래 코드는 비동기 루프 외부에서 함수를 실행하고 있습니다. async는 모든 URL의 유효성을 검사 한 후에 만 다음 코드를 실행할 수 있다고 생각했습니다. callback
async.map
의는 proxiedRequest
내부
app.post('/myposturl', function(req , res){
var request = require('request');
let linkDetails= req.body.linkDetails;
var i = 0;
async.map(linkDetails, function(newLink, callback) {
var Url = "url";
var url = newLink.linkUrl;
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;
}
}
});
callback();
} , function(err, linkDetails) {
res.send(linkDetails);
});
//tried res.send here as well.
});
}
async.mapSeries를 사용해보세요. –
시도했지만 행운을 : ( – Amal
async.map 대신 async.series 시도하고 async.series 내부 forin 루프를 사용하십시오. 내 응용 프로그램 중 하나에서 시도하고 괜찮 았어. –