4

Node.jsでシステムを設計しようとしています( Nodeの同時実行性を使用して以前の問題の1つを解決しようとしています)が、動作方法の計画を立てる方法を理解するのに苦労しています。

戻り値ではなくコールバックの観点から考えると、非常につまずきます。流れは直線的ではなく、それをドラフトする私の能力を本当に困惑させています。イベント駆動型システムの運用フローをどのように引き出すのですか?

私は、「わかりました、はい、それがどのように機能するかです。ここからやり直します。これらの結果がここに返されます」と言うことができるものが必要です。

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

編集: UMLよりもきめ細かいもの、具体的には、私が快適なブロッキングおよびオブジェクト指向プログラミング構造から、私が快適な非ブロッキングおよびイベント駆動型構造に移行するのに役立つものを探しています。 mなじみのない。

4

2 に答える 2

3

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

そのようなライブラリの1つはhttps://github.com/isaacs/slide-flow-controlであり(スライド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
于 2011-01-14T05:36:58.443 に答える
0

UMLが適切かもしれません。行動図を見てみます。

于 2011-01-12T04:43:27.470 に答える