0
このコードを検討してください。 first catch
ブロックが実行されるとしたら、問題はtestP
または約束のfirst then
によって引き起こされたかどうかを判断する方法が問題です。約束コードに矛盾があります
var testP = function(){
return new Promise(function(resolve, reject){
//reject or resolve
});
}
testP().then(function(res){
console.log("first then");
console.log(res);
return new Promise(function(resolve,reject){
// reject or resolve
})
})
.catch(function(err){
console.log("first catch");
console.log(err);
})
OPで「エラー」のタイプを確認できませんでしたか? – niceman
@nicemanはい、まあまあ、約束が特定の誤りで拒否された場合、そうすることができます。 'reject(新しいError(" TESTP_ERROR "))'と 'reject(新しいError(" THEN_ERROR "))'を呼び出すと、キャッチコールバックで 'err.message'をチェックしてそれに応じて動作します。 Morever、もしあなたが 'Error'を拡張する独自のエラーを定義するルートを望むなら、' if(err instanceof MyCustomError')をチェックすることができます。一般に、他のランタイムエラーも同様にコード内で起こることに注意してください。定義されていないオブジェクト上にあるので、それらも 'catch'コールバックを呼び出すことを考慮する必要があります。 –
通常、これを解決する方法は、あなたが捕捉しているエラーのタイプを区別することです。特定のエラーを処理してチェーンをそこから続けるには、捕捉したい '.then()'の人のエラーの直後に '.catch()'を置く。 – jfriend00