Node.js 如何勾勒出一个事件驱动的系统?

Node.js 如何勾勒出一个事件驱动的系统?,node.js,project-planning,event-driven-design,Node.js,Project Planning,Event Driven Design,我试图在Node.js中设计一个系统(尝试使用Node的并发性来解决其中一个问题),但是我在弄清楚如何绘制一个应该如何操作的计划时遇到了麻烦 我在考虑回调而不是返回值的时候被绊倒了。流动不是线性的,我起草它的能力真的令人难以置信。如何绘制事件驱动系统的操作流程 我需要一些我可以看到的东西,然后说“好的,是的,这就是它的工作原理。我从这里开始,它会在这里返回这些结果。” 这张照片会很有帮助。谢谢 编辑:我正在寻找更细粒度的东西,具体来说,它将帮助我从一个我熟悉的阻塞和面向对象的编程结构过渡到一个我

我试图在Node.js中设计一个系统(尝试使用Node的并发性来解决其中一个问题),但是我在弄清楚如何绘制一个应该如何操作的计划时遇到了麻烦

我在考虑回调而不是返回值的时候被绊倒了。流动不是线性的,我起草它的能力真的令人难以置信。如何绘制事件驱动系统的操作流程

我需要一些我可以看到的东西,然后说“好的,是的,这就是它的工作原理。我从这里开始,它会在这里返回这些结果。”

这张照片会很有帮助。谢谢

编辑:我正在寻找更细粒度的东西,具体来说,它将帮助我从一个我熟悉的阻塞和面向对象的编程结构过渡到一个我不熟悉的非阻塞和事件驱动的结构

可能是合适的。我看一下行为图。

基于您需要的是一个好的流库,它允许您在节点中管道同步和异步调用

一个这样的库是(也可以查看那里的代码),下面是您需要执行的代码大纲

它是自文档化的,正如您所看到的,它非常简洁,不需要纯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

这是一个很好的开始,我已经有了一个这样的图表:但是我正在寻找一些更直接的帮助我从idea/diagram->Evented代码开始。当我从OOP转向事件驱动的代码风格时,我很难想象我需要写什么。这正是我想要的。我开始使用Seq,但后来破坏了我的Node/npm安装: