Promise.all Mongoose betreibt Datenbank – Stapelüberlauf
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-06-15 09:22:14
0
2
902

Verwenden Sie Promise.all([p1, p2]), um zwei Promise-Funktionen zu betreiben. Beide Funktionen verwenden intern Mongoose, um die Datenbank zu betreiben.

Wenn p1 abgelehnt und p2 gelöst wird.

Meine Frage ist, ob p2 tatsächlich Vorgänge in der Datenbank durchgeführt hat. Oder stellt „promise.all“ sicher, dass sowohl p1 als auch p2 aufgelöst werden, bevor tatsächliche Datenbankvorgänge ausgeführt werden?

Es fühlt sich an, als wäre es ein Mungo-Transaktionsproblem.

曾经蜡笔没有小新
曾经蜡笔没有小新

Antworte allen(2)
为情所困

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... 应该能满足你的需求

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage