我有这段代码。
这里有几个异步操作。对于每个用户,我想找到他们相关的好友,然后将它们连接到一个变量中。然后,我想检查该用户是否拥有网站帐户,如果有,就进行一次POST请求并获取一些信息。唯一的问题是,由于代码没有等待回调完成,所以所有操作都是无序的。我一直在使用sleep,但这也不能解决问题,因为依然会混乱。
我尝试过使用async,但这些函数是交织在一起的,不太容易分开,所以我不确定如何使用async。
有什么建议可以让这段代码按顺序运行吗?
谢谢!
User.find({}, function(err, users) {
for (var i = 0; i < users.length; i++) {
pseudocode
Friend.find({
'user': curUser._id
}, function(err, friends) * * ANOTHER CALLBACK * * {
for (var i = 0; i < friends.length; i++) {
pseudocode
}
console.log("HERE I'm CHECKING " + curUser);
if (curUser.websiteaccount != "None") {
request.post({
url: 'blah',
formData: blah
}, function(err, httpResponse, body) { * * ANOTHER CALLBACK * *
pseudocode
sendMail(friendResults, curUser);
});
} else {
pseudocode
sendMail(friendResults, curUser);
}
});
console.log("finished friend");
console.log(friendResults);
sleep.sleep(15);
console.log("finished waiting");
console.log(friendResults);
}
});
这里有几个异步操作。对于每个用户,我想找到他们相关的好友,然后将它们连接到一个变量中。然后,我想检查该用户是否拥有网站帐户,如果有,就进行一次POST请求并获取一些信息。唯一的问题是,由于代码没有等待回调完成,所以所有操作都是无序的。我一直在使用sleep,但这也不能解决问题,因为依然会混乱。
我尝试过使用async,但这些函数是交织在一起的,不太容易分开,所以我不确定如何使用async。
有什么建议可以让这段代码按顺序运行吗?
谢谢!