fetch
への次の呼び出しがあります。
this.http.fetch('flasher', { method: 'post', body: jsonPayload })
.then(response => response.json())
.then(data => console.log(data));
これは、200の応答を受信した場合は機能しますが、500の応答を受信した場合はコンソールに何も記録しません。 500をどのように処理しますか?
then
とcatch
の組み合わせは機能します。
_fetch('http://some-site.com/api/some.json')
.then(function(response) { // first then()
if(response.ok)
{
return response.text();
}
throw new Error('Something went wrong.');
})
.then(function(text) { // second then()
console.log('Request successful', text);
})
.catch(function(error) { // catch
console.log('Request failed', error);
});
_
fetch()
は、Promise
オブジェクトを含むResponse
を返します。 Promise
は、満たされるか拒否されるかのいずれかになります。フルフィルメントは最初のthen()
を実行し、promiseを返し、2番目のthen()
を実行します。拒否は最初のthen()
をスローし、catch()
にジャンプします。