Node.js 控制复杂流节点
我想使用像async这样的库来控制NodeJS中的流。我查过异步,它有串联、并联、瀑布,它们都不适合。瀑布看起来不错,但还不够。我的代码如下:Node.js 控制复杂流节点,node.js,Node.js,我想使用像async这样的库来控制NodeJS中的流。我查过异步,它有串联、并联、瀑布,它们都不适合。瀑布看起来不错,但还不够。我的代码如下: checkInMemcache(resultl, function( { if(!result) { checkInMongo(result2, function( { if(result2) { checkOther(result3, function() { if
checkInMemcache(resultl, function(
{
if(!result) {
checkInMongo(result2, function(
{
if(result2) {
checkOther(result3, function() {
if else ..
})
} else {
.. do something
}
}
)
} else {
.. do something
}
}
)
看看那些漂亮的控制流模式。掌握它们将允许您在开始时不使用任何LIB来解决简单的并发/异步问题: 看看这个: 另一个值得检查的好读物是: 下面是其他Promise/a规范实现的列表: JQuery jqueryland中的第一选择 承诺/A+ 节点土地的1选择 最轻的选择 最快的选择 我用这个。我将创建一个检查函数列表。每个检查函数都检查某些存储检查可以是同步的或异步的,并且只有在找不到值的情况下才继续执行下一个函数。否则,函数将执行给定的回调并继续下一步
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
}
这种控制流的优点是避免了回调嵌套。也可以通过创建一个检查函数数组并实现下一个方法来实现类似的控制流,而无需任何模块,该方法将下一个函数从数组中移出并执行。如果该函数有一个结果,它将执行onResult。否则,它将再次调用next,以此类推,直到数组变为空
灵活的模块非常小,它允许以这种方式执行串行、并行和混合流。如何保证它不容易实现:并且看起来像原始代码。。