以下は例である:コードについてJavascriptの約束では、なぜエラーが次のチェーン `.catch()`に渡されないのですか?
var promise = new Promise(function(resolve, reject) {
throw new Error('test');
});
promise.catch(function(error) {
console.log(error + ' 1 ');
return error
}).catch(function(error) {
console.log(error + ' 2 ');
return error
})
結果は次のとおり
Error: test 1
分かるように、第二catch
呼び出しが動作しません。これは、Promiseがcatch
のチェーン構文を使用してエラーを処理できないことを意味しますか?現在のエラーを次のcatch()
コールに渡す方法はありますか?
エラーは再発しません。何故戻り値が捕捉されると見なされるのでしょうか?代わりに 'throw error;'を使用すると、期待する動作が得られるはずです。 – Luaan
可能な複製http://stackoverflow.com/questions/35042068/why-is-onrejected-not-called-following-promise-all-where-promise-reject-incl – guest271314
もしあなたが* catch *から何かを返すならばあなたは問題を処理したと言いますが、これは継続する価値です。あなたが問題を処理していない場合は、*返すのではなく* rethrow *。 –