首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >控制复杂流程nodejs

问控制复杂流程nodejs
EN

Stack Overflow用户
提问于 2014-01-13 16:11:03
回答 2查看 313关注 0票数 0

我想使用像async这样的库来控制NodeJS中的流。我检查了一下异步,它有串口,并口,瀑布,它们都不适合。瀑布看起来不错,但还不够。我的代码如下:

代码语言:javascript
复制
checkInMemcache(resultl, function(
 {
   if(!result) {
     checkInMongo(result2, function(
      {
        if(result2) {
         checkOther(result3, function() {
           if else ..
         })
        } else {
         .. do something
        }
      }
     ) 
   } else {
     .. do something
   }
 }
)
EN

回答 2

Stack Overflow用户

发布于 2014-02-02 01:36:45

看看这些很好的控制流模式。掌握它们将允许您在开始时不使用任何库来解决简单的并发/异步问题:

看看这个:http://book.mixu.net/node/ch7.html

另一个值得检查的好读物是:

http://trevorburnham.com/presentations/flow-control-with-promises/#/

下面是Promise/A规范的其他实现:

JQuery

的首选

承诺/A+

票数 0
EN

Stack Overflow用户

发布于 2014-02-02 02:00:58

我使用nimble实现这一点。我会创建一个检查函数的列表。每个检查函数都会检查特定的存储(检查可以是同步的也可以是异步的),并且只有在没有找到值的情况下才会继续执行下一个函数。否则,函数将执行给定的回调并继续下一步。

代码语言:javascript
复制
var flow = require('nimble');

flow.series([
  function checkInMemcache(callback) {
    // get memResult
    if (memResult) { // result found
      onResult(result);
    } else { // continue with the next step
      callback();
    }
  },
  function checkInMongo(callback) {
    // check in MongoDB, like
    mongo.asyncCheck(function(result) {
      if (result) { // result found
        onResult(result);
      } else { // continue with the next step
        callback();
      }
    });
  },
  function checkOther(callback) {
    // perform other checks
  }
]);

function onResult(result) {
  // do something
}

这样的控制流的优点是它避免了回调嵌套。也可以通过创建一个shift() - functions数组并实现一个检查方法来实现类似的控制流,该方法从数组中检查next函数并执行它。如果该函数有结果,它将执行onResult()。否则,它会再次调用next(),依此类推,直到数组变为空。

Nimble模块非常小,它允许以这种方式执行串行、并行和混合流。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21086522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档