我有几个.find()
个查询,我不确定等待所有回调完成的好方法。
我的意思是,我可以做一些计数器并在每个回调函数上增加它并在每次更改时检查它,但我觉得这真的是durty。
然后有一些像async
和Q
这样的库,但我不确定我是否想要使用 来等待一些回调。
所以,我的问题是:你遇到了同样的问题,你是如何解决的?
答案 0 :(得分:2)
让每次调用回调时增加的计数器都不脏,但是大多数库在后面以某种方式做了什么。但是,这是使用async等待一些回调的一种方法:
async.parallel({
ppl: Person.find.bind(Person, { status: 1 }),
catz: Cat.find.bind(Cat, { meow: 2 })
},
function (err, result) {
console.log(result.ppl, result.catz);
});
.bind()只是一个快捷方式:
function (next) {
People.find({ status: 1}, next);
}
根据您的情况,您可能希望使用async.series,.each或.waterfall。