gpt4 book ai didi

javascript - Node.js 中迭代的异步问题

转载 作者:行者123 更新时间:2023-11-30 05:51:46 24 4
gpt4 key购买 nike

我发现自己遇到了迭代数组的问题,为每个调用我的回调的项目触发异步操作,我再次迭代数组......当然在进入下一个项目之前,你需要等待上一个完成。如果在处理项目时发生错误,您必须停止并退出所有封闭循环。

我为处理这些情况而编写的代码易于编写但不易阅读/维护。为了这个问题的完整性,我目前正在使用我编写的方法,如下所示:

iterate(items, item_callback, ended_callback);

item_callback 看起来像这样:

function(item, next_item, stop) {

//do your stuff with `item` here...

//return next_item() to go forward
//return stop() to break
}

我想知道也许我错过了在 node.js 中迭代的更好技术。

示例时间:

User.find(function(err, users) {
//iterate through users: how?
//first attempt: for
for(var i in users) {
//simple stuff works here... but if I call something async... what do I do?
//like iterating through friends
User.find({friend:users[i]._id}, function(err, friends) {
if(err) {
//handle error: how is best to do this?
}
//this might end after the next user is selected... and might break things
});
}
});

TL;DR:如何在 node.js 中进行迭代,使其同时适用于异步代码和经典同步代码?

P.S.:我相信有些用户会在使用 async 模块时回答一些问题。我知道这件事。我不喜欢我的代码在使用时的样子。它比我当前的解决方案更难维护。我需要更好的东西。

最佳答案

有一吨node.js flow control libraries用于处理异步操作。它们都有略微不同的方法和语法糖,但 async 可能是最受欢迎的。我更喜欢 Step,因为它的功率重量比。 :)

关于javascript - Node.js 中迭代的异步问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14286686/

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