微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – nodejs中的异步和递归

从express和mongoose开始,我经常需要对集合进行一些批处理操作.
然而,它通常涉及回调,这对于如何在nodejs中编码并发而言是一种痛苦.
所以基本上

//given a collection C 
var i = 0;
var doRecursive = function(i){
    if(i<C.length){
      C[i].callAsync(err,result){
        i=+1;
        return doRecursive(i);
       }
    }else{
      return done();
    }
}
doRecursive(i);

现在我不记得在获得带节点的堆栈流之前最大堆栈是什么,但我想有10 000个元素,它不会这样做.
我想知道是否还有其他方法可以解决这个问题,如果是的话,它们是什么?
谢谢

解决方法:

如果目标是异步迭代集合,则可以使用许多控制流库.

一个很好的例子是async及其reduce function

async.reduce(C, 0, function (memo, item, callback) {
    item.callAsync(function (err, result) {
        if (err) {
            callback(err);
        } else {
            callback(null, memo + result);
        }
    });
}, function (err, result) {
    // ...
});

注意:您不希望从doRecursion获得什么值,所以这只是使用了一个例子.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐