gpt4 book ai didi

javascript - nodejs中的异步和递归

转载 作者:可可西里 更新时间:2023-11-01 09:11:44 26 4
gpt4 key购买 nike

expressmongoose 开始,我经常需要对集合进行一些批量操作。然而,它通常涉及回调,考虑到并发是如何在 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);

现在我不记得在我得到 Node 的堆栈溢出流之前的最大堆栈是多少,但我猜有 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 中获得什么值,因此这里仅使用加法作为示例。

关于javascript - nodejs中的异步和递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17622140/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com