2012-11-16 1 views
0

그냥 발견 된 Node.io, 문서, API 등으로 사라졌으며 멋지게 보입니다. 그러나, 내 첫번째 직업을 구축 exports.job = new nodeio.Job(..), input, run,output, reduce, complete 같은 방법으로 나는 input()에 연속 호출하기 전에 한 번 호출되는 initialize() 메서드의 일종이 필요합니다. (비슷하게 작업이 끝나기 전에 complete가 한 번 호출되는 방법)사용자 정의 asnyc 코드를 호출하여 node.io 작업을 한 번 초기화하는 방법 (input()을 연속적으로 호출하기 전에)?

그런 방법이 있습니까?

완성을 위해 : 이 코드는 node.io 범위 밖에서 내 비동기 코드를 초기화 한 이후에 (일부 전용 메소드를 통해) node.io 플로우의 일부가되어야합니다. node.io 작업이 실행됩니다.

+0

아마 내가 더 분명해야했습니다. 나는'input, run, output, reduce, complete'와 같은 메소드를 사용하여 node.io Job을 정의 할 것입니다. 물론 그 파일에서 ('exports.job = new nodeio.Job (..)) '하기 전에 일부 데이터를 초기화 할 수 있지만 비동기 초기 코드 (mongodb 쿼리 결과)가 필요합니다. abobe의 경우, 이것은 비동기 init 코드가 작업이 실행되기 전에 (분명히) 수행되지 않습니다. 대신 비동기 init-code의 콜백에서'exports.job = new nodeio.Job'을 호출하려고 시도했지만 node.io 오류가 발생했습니다. 따라서 전용 node.io 메소드를 찾으십시오. –

+0

질문에 모두 넣어주세요. 서식이 지정되었습니다. 고맙습니다. – Neal

+0

나는 완전 할 것이다. 그러나 Node.io 라이브러리에 익숙합니까? 왜냐하면 내 의견은 API에 익숙한 사람들에게는 다소 불필요한 것처럼 보입니다. –

답변

0

그런 방법이 있는지 모르겠다면 소스를 탐색 했습니까? 그것은 프로세서에 의해 호출되는 'init'메소드가있는 것처럼 보입니다. 이를 시도하고 찾고있는 것이 아닌 경우 node.io github site의 기능으로 제안 할 수 있습니다.

그렇지 않으면 직접 추가하는 것이 좋습니다. 그냥 개체에 'initialize'메서드를 추가 한 다음 '입력'또는 '실행'메서드의 맨 위에 다음 줄을 추가하십시오. (데이터 준비가 이미 필요하면 더 잘 작동 할 것입니다) :

if (!this.initialized) { 
    this.initialized = true; 
    this.initialize(); 
} 

물론 여기에는 약간의 성능 저하가 있습니다. 그러나 대부분의 경우, 하나의 변수 값을 확인하는 데 소요되는 시간은 실제로 필요한 처리량에 비해 매우 적습니다.

+0

감사. 나는'input' 메소드에서 init 코드를 인라인했다. 그것은 비동기 코드이지만, 당신이 제안한 것과는 다른 것입니다. –

관련 문제