我想有一系列的同步執行的承諾,鏈接在一起,但只有具有一定的承諾基礎上增加了一個條件中..的同期鏈藍鳥共同承諾一系列
繼承人的一個例子是我意思是:
const Promise = require('bluebird')
const funcA = int => new Promise(res => res(++int))
const funcB = int => new Promise(res => res(++int))
const funcC = int => new Promise(res => res(++int))
let mainPromise = funcA(1)
// Only execute the funcB promise if a condition is true
if(true)
mainPromise = mainPromise.then(funcB)
mainPromise = mainPromise.then(funcC)
mainPromise
.then(result => console.log('RESULT:',result))
.catch(err => console.log('ERROR:',err))
如果布爾爲真,則輸出爲:RESULT: 4
,如果假的,那麼它的,而這正是我試圖完成。
我覺得應該有更好,更乾淨的方法來做到這一點。我正在使用藍鳥承諾庫,它非常強大。我試着用Promise.join
,這並沒有產生預期的結果,我也沒有Promise.reduce
(不過,我可能一直在做一個不正確地)
感謝
你能告訴我們您如何使用'Promise.reduce'? – Bergi
只是一個挑逗,但[承諾沒有執行](http://stackoverflow.com/a/30823708/1048572) – Bergi
你想評估'funcA()'解決時的情況,或者是靜態地知道什麼時候構建鏈(如你的例子)?或者沒有關係? – Bergi