84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
Use Promise.all([p1, p2]) 2 つの Promise 関数を操作するには、どちらの関数も内部で mongoose を使用してデータベースを操作します。
p1 が拒否され、p2 が解決された場合。
私の質問は、p2 が実際にデータベース上で操作を実行したということですが、そうですか? それとも、promise.all は、実際のデータベース操作を実行する前に p1 と p2 の両方が解決されることを保証しますか?
これはマングースのトランザクションの問題のようです。
Promise.all 是当所有给定的可迭代完成时执行 resolve,或者任何 promises 失败时执行 reject。如果传递任何的 promises rejects ,所有的 Promise 的值立即失败,丢弃所有的其他 promises,如果它们未 resolved。如果传递任意的空数组,那么这个方法将立刻完成。
var p0 = new Promise((resolve, reject) => { setTimeout(() => { console.log(1) }, 100); }); var p1 = Promise.resolve(3); var p2 = 1337; var p3 = new Promise((resolve, reject) => { setTimeout(reject, 100, "foo"); }); var p4 = new Promise((resolve, reject) => { setTimeout(() => { console.log(2) }, 100); }); var p = Promise.all([p0, p1, p2, p3, p4]).then(values => { console.log(values); }, values => { console.log(values) // foo }); // 1 2
1) promise all中的每个promise都会被执行
2)此时p的状态就变成rejected
针对你这种情况,恰好我写了个包,https://github.com/zaaack/mon... 应该能满足你的需求
Promise.all 是当所有给定的可迭代完成时执行 resolve,或者任何 promises 失败时执行 reject。
如果传递任何的 promises rejects ,所有的 Promise 的值立即失败,丢弃所有的其他 promises,如果它们未 resolved。如果传递任意的空数组,那么这个方法将立刻完成。
1) promise all中的每个promise都会被执行
2)此时p的状态就变成rejected
针对你这种情况,恰好我写了个包,https://github.com/zaaack/mon... 应该能满足你的需求