2013-10-07 2 views
0

coffeescript로 작성하지만 원리는 같습니다. ps.list 및 ps.read (npm 레지스트리의 pslook 모듈에서)를 호출합니다. 이 함수는 결과를 반환하지 않지만 전달 된 콜백을 호출합니다. setTimeout은 내가하고 싶은 것이 아니지만이 문제를 해결하는 데 어려움이 있습니다. 아이디어가 있습니까? IcedCoffeeScript가 어떤 식 으로든 여기에서 도울 수 있는지 확실하지 않은가요?자바 스크립트 동기식 호출

+1

. 이것 좀 봐 : http://stackoverflow.com/questions/10551499/simplest-way-to-wait-some-asynchronous-tasks-complete-in-javascript 거기에 많은 좋은 솔루션이 있습니다. – freakish

답변

1

모든 콜백이 호출되기를 기다리는 간단한 카운터는 어떻습니까?

테스트되지 않은 예 : 모든 비동기 작업이 작업을 마칠 때까지 대기의 고전적인 문제를 다루고있는

ps.list (err, results) -> 
    if err then throw err 
    waitingFor = results.length 
    results.forEach (result) -> 
    ps.read result.pid, (err, process) -> 
     if err then throw err 
     instances.push process.cmdline 
     waitingFor -= 1 
     goOn(instances) if waitingFor == 0 
    , 'fields': ps.ALL 
, 'search': /^ssh/ 

goOn (instances) -> 
    console.dir instances 
+0

아직 테스트하지 않았지만 로직이 합리적인 것 같습니다. 감사 – gratz