javascript - promise.all mongoose操作資料庫
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-06-15 09:22:14
0
2
788

利用 Promise.all([p1, p2]) 去操作兩個promise函數,這兩個函數內部都是用 mongoose 來操作資料庫。

如果 p1 被 reject 了,而 p2 是 resolve。

我的問題是,p2 實際上已經進行了對資料庫的操作,是這樣嗎,還是 promise.all 確保了 p1、p2 都 resolve 才會進行實際的資料庫操作?

感覺是 mongoose 事務性的問題。

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

全部回覆 (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... 應該能滿足你的需求

      最新下載
      更多>
      網站特效
      網站源碼
      網站素材
      前端模板
      關於我們 免責聲明 Sitemap
      PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!