Mau*_*ora 5 asynchronous node.js
检查以下算法......
users = getAllUsers();
for(i=0;i<users.length;i++)
{
contacts = getContactsOfUser(users[i].userId);
contactslength = contacts.length;
for(j=o;j<contactsLength;j++)
{
phones = getPhonesOfContacts(contacts[j].contactId);
contacts[j].phones = phones;
}
users[i].contacts = contacts;
}
return users;
Run Code Online (Sandbox Code Playgroud)
我想使用node.js开发这样的逻辑.
我已经尝试使用异步与foreach和concat和foreachseries功能.但是在第二级都失败了.
当指针获得一个用户的联系人时,i增加的值和下一个用户的进程开始.
它不是在等待为一个用户完成联系人和电话的完成过程.并且只有在启动下一个用户之后.我想实现这一目标.
实际上,我想让用户正确地反对
意味着所有的序列都被毁了,任何人都可以给我一般的想法,我怎样才能实现这样一个系列的过程.我也愿意改变我的算法.
Vad*_*hev 12
在node.js中,您需要使用异步方式.您的代码应该类似于:
var processUsesrs = function(callback) {
getAllUsers(function(err, users) {
async.forEach(users, function(user, callback) {
getContactsOfUser(users.userId, function(err, contacts) {
async.forEach(contacts, function(contact, callback) {
getPhonesOfContacts(contacts.contactId, function(err, phones) {
contact.phones = phones;
callback();
});
}, function(err) {
// All contacts are processed
user.contacts = contacts;
callback();
});
});
}, function(err) {
// All users are processed
// Here the finished result
callback(undefined, users);
});
});
};
processUsers(function(err, users) {
// users here
});
Run Code Online (Sandbox Code Playgroud)