場合あなたは配列で実現された約束を持っていて、その配列の長さがわかっているなら、.spread()
を使って配列を個々の関数引数に変換することができます。ハンドラを呼び出す前に、引数を配列から個々の引数に変換するのは.then()
の代わりです。これに代えので
、:
someFunction().then(function(arrayOfArgs) {
let arg1 = arrayOfArgs[0];
let arg2 = arrayOfArgs[1];
});
あなたがこれを行うことができます:あなたの特定のコード例では、Promise.join()
はすでに個々を分離するコールバックを提供しています、だから、
someFunction().spread(function(arg1, arg2) {
// can directly access arg1 and arg2 here
});
を結果はまったく必要ないはずです。だから、あなただけのこの操作を行うことができます:
return Promise.join(
findStagingAdvanced(stagingQuery),
findDboAdvanced(dboQuery),
(stagingIssues, dboIssues) => _.concat(dboIssues, stagingIssues)
).then(allIssues => {
// allIssues contains combined results of both functions above
});
何このコードはfindStagingAdvanced()
とfindDboAdvanced()
から結果を収集し、その結果の一つの配列にまとめて、それらの結果をマージされてやっています。
それはこのように(例えば、ブルーバードの余分な機能なし)標準ES6で書くことができます明確な説明のための
return Promise.all([findStagingAdvanced(stagingQuery), findDboAdvanced(dboQuery)])
.then(results => results[0].concat(results[1]))
.then(allIssues => {
// allIssues contains combined results of both functions above
});
感謝 –