利用 Promise.all([p1, p2]) 去操作两个promise函数,这两个函数内部都是用 mongoose 来操作数据库。
如果 p1 被 reject 了,而 p2 是 resolve。
我的问题是,p2 实际上已经进行了对数据库的操作,是这样吗,还是 promise.all 确保了 p1、p2 都 resolve 才会进行实际的数据库操作?
感觉是 mongoose 事务性的问题。
利用 Promise.all([p1, p2]) 去操作两个promise函数,这两个函数内部都是用 mongoose 来操作数据库。
如果 p1 被 reject 了,而 p2 是 resolve。
我的问题是,p2 实际上已经进行了对数据库的操作,是这样吗,还是 promise.all 确保了 p1、p2 都 resolve 才会进行实际的数据库操作?
感觉是 mongoose 事务性的问题。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
4 回答2.4k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
Promise.all 是当所有给定的可迭代完成时执行 resolve,或者任何 promises 失败时执行 reject。
如果传递任何的 promises rejects ,所有的 Promise 的值立即失败,丢弃所有的其他 promises,如果它们未 resolved。如果传递任意的空数组,那么这个方法将立刻完成。
1) promise all中的每个promise都会被执行
2)此时p的状态就变成rejected