すべてに応じて、次に/キャッチをした約束を決定するために:私は約束するかなり新しいですどう
、ここでの例です:
var someAsyncThing = function() {
return new Promise(function(resolve, reject) {
// this will throw, x does not exist
resolve(x + 2);
});
};
var someOtherAsyncThing = function() {
return new Promise(function(resolve, reject) {
reject('something went wrong');
});
};
someAsyncThing().then(function() {
return someOtherAsyncThing();
}).catch(function(error) {
console.log('oh no', error);
});
私はかなりどのように.then(得ることはありません)プロミスと協力して、今すぐ私はsomeAsyncThing()
プロンプトを返すことを理解することができます。これは例外を生成し、したがって.catch()
部分に移動します。我々はresolve(x+2)
resolve(4)
に変更した場合と、それは
最初の質問は.thenのリターンは()という約束である場合で、別の約束をsomeOtherAsyncThing();
を実行し、返すために行くのだろうか?
そして2つ目の質問、someOtherAsyncThing()
の約束で、私は例外を引き起こすことがresolve(x+2)
を使用する場合、それはまた.catch()
同じ部分に行きます、そしてどのように私は.catch()
のみキャッチ例外が起因することを確認することができますsomeAsyncThing()
の約束(もし何かがあれば、同じ質問がチェーン.then()
にあります)? .then()の戻り値は、その約束である場合
おかげ
catchは、例外に関するより豊富な情報を得るために、または例外をスローしたことによって何か違うことをするために、チェーン内の例外を捕捉します。キャッチブロック内にあります。 – PixMach
@PixMachありがとう、それを得ました。これは本当に柔軟性があり、堪能ではありません。 – Kuan