異種の約束の集合の特定のケースにおいて、約束チェーンを平坦化するのに役立つQ.reduce
およびQ.all
などのメソッドがあります。しかし、一般的なケース:"インデントピラミッド"を使わないで任意のプロミスチェーンを正しく表現するには?
const F = (x) => x;
const a = F(1);
const b = F(2);
const c = F(a + b);
const d = F(a + c);
const e = F(b + c);
console.log(e);
つまり、各用語が事前に定義された任意の用語に依存する一連の割り当てです。
const F = (x) => Q.delay(1000).return(x);
私はインデントピラミッドを発生させることなく、そのパターンを表現する方法はありませんで考えることができます:返された値を使用して動作しないだろうと
F(100).then(a =>
F(200).then(b =>
F(a+b).then(c =>
F(a+c).then(d =>
F(b+c).then(e =>
F(d+e).then(f =>
console.log(f)
)
)
)
)
)
);
注:
F
が非同期呼び出しであると仮定
F(100).then(a => F(200))
.then(b => F(a+b))
.then(c => F(a+c))
.then(d => F(b+c))
.then(e => F(d+e))
.then(f => console.log(f));
たとえば、a
は2行目には含まれないため、この状況に対処する適切な方法は何ですか?その後の操作は、以前の操作の複数のビットに依存している方法のための
ここにはさまざまな方法があります:[前回の結果を約束して連鎖する方法](http://stackoverflow.com/questions/28714298/how-to-chain-and-shrop-prior-results-with-promises/28714863 #28714863)。実際には、この質問はその質問のダップかもしれません。 – jfriend00
@ jfriend00:それは間違いなく、同じものを複製したものです。 –
間違いなく重複しています。私は、このスレッドは全体的にもっと有益なものになっていると思います。 – MaiaVictor