2011-01-12 2 views
4

Node.js (노드의 동시성을 사용하여 my earlier problems 중 하나를 해결하려는 시도)에서 시스템을 설계하려고하지만 작업 방법을 계획하는 방법을 찾는 데 문제가 있습니다.이벤트 중심 시스템을 스케치하는 방법은 무엇입니까?

나는 반환 값 대신 콜백의 관점에서 생각해 보려한다. 흐름이 직선이 아니기 때문에 내 초안 작성 능력이 정말 좋지 않습니다. 이벤트 중심 시스템의 운영 흐름을 어떻게 끌어낼 수 있습니까?

내가 볼 수있는 "괜찮아, 맞아, 어떻게 작동 할까?"라고 말하고 싶습니다. 여기에서 시작해 볼게요.

그림이이 기능에 매우 유용합니다. 감사.

편집 : 나는 비 차단 및 이벤트에, 내가 편안 해요 곳, 프로그래밍 구조를 객체 지향, 특히, UML보다 뭔가를 차단에서 나에게 전환을 도와 무언가를보다 세분화를 찾고 있어요 나는 익숙하지 않은 구동 구조를 사용한다.

답변

3

http://i.stack.imgur.com/9DDQP.png을 기반으로 노드에서 동기화 및 비동기 호출을 파이프 라인 할 수있는 좋은 흐름 라이브러리가 필요합니다.

그런 라이브러리 중 하나는 https://github.com/isaacs/slide-flow-control입니다 (slide preso도보십시오). 필요한 작업은 다음과 같습니다.

자기가 문서화하고있는 것처럼 매우 간결하지만 순수한 nodejs, uml, img 's 등은 필요하지 않습니다.

var chain = require("slide/chain") 
    , asyncMap = require("slide/async-map") 
    ; 

// start processing 
main_loop(function() { 
    console.log("its done"); // when finished 
}); 

function main_loop(cb) { 
    var res = []; 
    // each entry in chain below fires sequentially i.e. after 
    // the previous function completes 
    chain 
     ([ [start_update_q, "user-foo"] 
      , [get_followed_users, chain.last] 
      , [get_favorites, chain.last] 
      , [calc_new_q] 
      , [push_results, chain.last] 
      ] 
      , res 
      , cb 
     ) 
} 

function get_favorites(users, cb) { 
    function fn(user, cb_) { 
     get_one_users_favorites(user, cb_); 
    } 
    // this will run thru get_favorites in parallel 
    // and after all user favorites are gotten it will fire 
    // callback cb 
    asyncMap(users, fn, cb); 
} 

// code in the various functions in chain here, 
// remember to either return the callback on completion. 
// or pass it as an arg to the async call you make within the 
// function as above i.e. asyncMap will fire cb on completion 
+0

그게 내가 찾고 있었던 바로 그 것이다. Seq과 함께 게임을 시작했지만 Node/npm 설치가 중단되었습니다. http://goo.gl/fhilo –

0

UML이 적합 할 수 있습니다. 나는 행동 도표를 볼 것이다.

+0

좋은 시작, 나는 이미 그 라인을 따라도있어 : http://i.imgur.com/9DDQP.png하지만 더 직접적으로 나를에서 이동 도움이 될 것입니다 뭔가를 찾고 있어요 아이디어/다이어그램 -> 이벤트 코드. OOP에서 Event Driven 코드 스타일로 이동하면서 작성해야하는 것을 시각화하는 데 어려움을 겪고 있습니다. –

관련 문제