之前在使用 mongoose 的时候因为回调问题在社区请教了各位, 根据回答使用了 promise。问题大体时 如何在两个异步都回调后运行某一个函数 比如我有3个操作
getA(){}//从mongodb中获取A
getB(){}//从mongodb中获取B
countAB(){}// 对A和B操作
原本我是这样写的
getA(function(){
getB(function(){
countAB();
})
});
后来使用promise后,变成了下面这样
Promise.all([getA(),getB()])
.then(function(data){
countAB(data);
});
当前,这对我来说的巨大的进步,免去了多次嵌套。 但是,如果遇到更加复杂一点的情况呢? 比如
getA(){}//从mongodb中获取A
getB(){}//从mongodb中获取B
getCfromA(){}//根据A从mongodb中获取C
getDfromB(){}//根据B从mongodb中获取D
countCD(){}// 对C和D操作
那么我的操作是
Promise.all([getA(),getB()])
.then(function(data){
Promise.all([getCfromA(data[0]), getDfromB(data[1])])
.then(function(data){
countCD()
})
});
事实上,我要做的操作更加麻烦,我又不可避免进入无限的回调嵌套之中。 想请问我是不是使用promise的方法不对,有没有更好使用promise的方法。