URL의 배열을 node.js에서이 함수에 전달하려고합니다. 실제로 함수에 전달하기 전에 URL을 반복하는 것으로 보입니다. 함수를 호출하는 코드는 다음과 같습니다.함수가 루프를 완성하지 못했습니다.
async.eachSeries(validDatesArr,
function(validDatesArrItem, callback){
var newMonth = validDatesArrItem.getMonth()+1;
loadPage(baseURL+'/month='+newMonth+'&day='+validDatesArrItem.getDate()+'&year='+validDatesArrItem.getFullYear(),function(data){
loopThroughData(data, function(){
var d = validDatesArr[count];
d.setDate(d.getDate() + 1);
validDatesArr.push(d);
count++;
callback();
});
});
}, function(err){
if(!err){
console.log('We processed each date requests one by one');
}
}
);
내가 작업하고있는 함수는 loadPage입니다. 보시다시피 매번 날짜 변수에 날짜를 추가 한 다음 수정 된 날짜가있는 URL을 loadPage 함수에 전달합니다. 나는 모든 것을 순조롭게하기 위해 고심하고있다. 내 코드의 나머지 부분은 순서대로 진행되고있는 것처럼 보이지만이 특정 URL을 전달하여 함수가 완료 될 때까지 기다린 다음 두 번째 URL을 전달할 수는 없습니다. 나는 그것이 async.eachSeries 함수의 핵심이라고 생각했다.
그래서 요약하자면, 내가 원하는 :
- 전화 첫 번째 URL에서 loadData 기능
- 그 기능은 날짜에 추가하고 실행하는 루프하는 (
- 계속 완료 될 때까지 기다립니다 loadPage 함수를 다시 실행). 사전에
function loadPage (url, callback){ data = []; request(url, function(err, response, body){ if(!err && response.statusCode ==200){ console.log('Loading URL: ',url,' into Cheerio.'); var $ = cheerio.load(body); $('td', 'tbody').each(function(){ var text = $(this).text(); data.push(text); }); callback(data); } }); }
감사 : 여기
는 loadPage 기능 코드입니다!
자바 스크립트 약속을 살펴보십시오. 'async' 라이브러리는 꽤 오래되고 못생긴 솔루션입니다. 약속 개념을 이해하면 약속 대기열을 사용하여 신속하게 질문을 해결할 수 있습니다. – Jehy