私はnodejsプロジェクトで作業しており、チェーン内で約束を飛ばしたいと思っています。以下は私のコードです。最初の約束ブロックでは、値{success: true}
が解決されます。 2番目のブロックでは、success
の値をチェックしたいと思います。もし本当であれば、その値を呼び出し側に返し、残りの約束をスキップします。値がfalseの場合はチェーンを続行します。私はエラーをスローするか、2番目のブロックで拒否できることは知っていますが、エラーケースではないエラーケースを処理する必要があります。だから、私はこれをどのようにして有望なチェーンで達成できるでしょうか?他のサードパーティのライブラリを持たずに解決策が必要です。単に巣あなたはスキップするチェーン(あなたのケースでは余り)の一部チェーン内で約束をスキップする方法
new Promise((resolve, reject)=>{
resolve({success:true});
}).then((value)=>{
console.log('second block:', value);
if(value.success){
//skip the rest of promise in this chain and return the value to caller
return value;
}else{
//do something else and continue next promise
}
}).then((value)=>{
console.log('3rd block:', value);
});
あなたはチェーンの真ん中からリンクを外して1つのチェーンを持っているとは思えません...あなたは2つあります!もちろん、チェーンに沿って「特別に細工された」値を送信して検出することもできます。 –
呼び出し元に値を返すことはできません。 promiseを呼び出した結果は、返された値ではなく、promiseオブジェクトを返します。 – modernator
[可能性のある場合には、if-elseをどのように扱うか?](http://stackoverflow.com/questions/33257412/how-to-handle-the-if-else-in-promise-then) –