2011-01-12 13 views
4

私はNode.js(ノードの並行性を使ってmy earlier problemsのいずれかを解決しようとしています)でシステムを設計しようとしていますが、どのように動作させるべきかの計画を描く方法がわかりません。イベント駆動型システムをスケッチするには?

戻り値ではなくコールバックの観点から考えると非常にうまくやっています。流れは線形ではなく、実際にそれを描く私の能力にはうんざりしています。イベントドリブンシステムの運用フローをどのように引き出すのですか?

私は見ることができ、「はい、それはうまくいく」と言いたいものがあります。私はここで始めるでしょう。

写真はこれに非常に役立ちます。ありがとう。

編集:私は非ブロッキングとイベントに、具体的には、UMLよりも細かい何かのために私にブロックからの移行と、私は快適だオブジェクト指向プログラミングの構造を、役立つ何かを探しています私が慣れていないところでは、

答えて

3

http://i.stack.imgur.com/9DDQP.pngに基づいて、ノードで同期と非同期の呼び出しをパイプラインで処理できる優れたフローライブラリが必要です。

このようなライブラリの1つはです(ここでもslide presoをご覧ください)。必要な作業のコードの概要は以下のとおりです。

これは自己文書化であり、わかりやすく、純粋なnodejs、uml、imgなどは必要ありません。

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からイベントドリブンのコードスタイルに移行する際に、私が書く必要があるものを視覚化するのに苦労しています。 –

関連する問題