Bạn có thể kiểm tra content-type
phản hồi, như được hiển thị trong ví dụ MDN này :
fetch(myRequest).then(response => {
const contentType = response.headers.get("content-type");
if (contentType && contentType.indexOf("application/json") !== -1) {
return response.json().then(data => {
// process your JSON data further
});
} else {
return response.text().then(text => {
// this is text, do something with it
});
}
});
Nếu bạn cần hoàn toàn chắc chắn rằng nội dung là JSON hợp lệ (và không tin tưởng vào các tiêu đề), bạn luôn có thể chấp nhận phản hồi text
và tự mình phân tích cú pháp:
fetch(myRequest)
.then(response => response.text())
.then(text => {
try {
const data = JSON.parse(text);
// Do your JSON handling here
} catch(err) {
// It is text, do you text handling here
}
});
Async / await
Nếu bạn đang sử dụng async/await
, bạn có thể viết nó theo kiểu tuyến tính hơn:
async function myFetch(myRequest) {
try {
const reponse = await fetch(myRequest); // Fetch the resource
const text = await response.text(); // Parse it as text
const data = JSON.parse(text); // Try to parse it as json
// Do your JSON handling here
} catch(err) {
// This probably means your response is text, do you text handling here
}
}