2017-09-19 2 views
1

요청 (길이 125664)을 사용하여 json 데이터를로드하고 그 데이터에서 for으로 루프를 수행하지만 물론 모든 데이터를 표시 할 수는 없습니다. 시간은 메모리 누수 등을 일으킬 수 있기 때문에 각각의 줄마다 휴식 시간을 사용하는 방법, setTimeout 등 다양한 방법을 시도했지만 아무 것도 작동하지 않았습니다.비동기 루프 프로세스에서 프로세스가 완료 될 때까지 대기/대기

현재 내 코드 :

request({ 
    url: config.url.productSource, 
    json: true 
}, function(error, response, body) { 
    console.log(body.length); 
    for(let link of body) { 
    console.log(link); 
    product(link); // call puppeteer headless browser (async) 
    stats(link); // call puppeteer headless browser (async) 
    } 
}); 

답변

0

당신이 뭘 하려는지는 기능 제품에 전화를 병렬화 및 통계 또는 foreach 문을 확인하는 경우 나, 잘 알아낼 수 없습니다 두 비동기 호출이 완료 될 때까지 루프를 기다려서 정확한 코드를 찾을 수 없다. nodejs에 비동기라고하는 모듈이있다. 알고리즘을 구성하고 올바른 병렬 또는 시리즈 호출을 구성하는 것이 중요합니다.

여기를보세요 : 당신이 async & await을 원하는처럼 async

+0

내가 볼게요 – jihantoro

1

보인다. 괴짜를 호출 할 때 async 함수와 await 콜백을 변경하십시오.

request({ 
    url: config.url.productSource, 
    json: true 
}, async (error, response, body) => { 
    console.log(body.length); 
    for(let link of body) { 
    console.log(link); 
    await product(link); // call puppeteer headless browser (async) 
    await stats(link); // call puppeteer headless browser (async) 
    } 
}); 

귀하의 제품과 통계 기능이 이미 비동기라고 가정합니다.

+0

아,'async' 다음에'function'을 놓치 셨습니다. 도와 주셔서 감사합니다 ^^ – jihantoro

+0

편집 됨. 올바른 문맥을 설정하기 때문에 화살표 함수를 사용하십시오. – nilobarp

+0

하지만 '할당 실패 - 메모리 부족 처리'가있을 때까지 작동하지 않습니다. – jihantoro

관련 문제