Promiseチェーン版 fetch() デモ
JavaScript コード
fetch(url)
.then(response => {
if (!response.ok) {
log(`→ response.status: ${response.status}`);
log(`→ Content-Type: ${response.headers.get("Content-Type")}`);
throw new Error("HTTPステータスエラー: " + response.status);
};
} else if (response.headers.get("Content-Type") !== "application/json") {
log(`→ response.status: ${response.status}`);
log(`→ Content-Type: ${response.headers.get("Content-Type")}`);
throw new Error("JSON形式ではありません");
} else {
log(`→ response.status: ${response.status}`);
log(`→ Content-Type: ${response.headers.get("Content-Type")}`);
return response.json();
}
.then(profile => {
displayUserProfile(prpfile);
})
.catch(err => {
if (err instanceof TypeError && err.message.includes("Failed to fetch")) {
log("Promise: reject");
log("エラー発生: 通信エラー(ネットワーク不通、WiFiオフ、サーバー未起動など)");
} else {
log("エラー発生: " + err.message);
}
})
.finally(() => {
log("通信処理完了");
});
PHP コード(user_profile.php)
<?php
sleep(5);
if (isset($_GET['raw'])) {
header('Content-Type: text/plain');
echo "これはJSONではありません";
exit;
}
header('Content-Type: application/json');
echo json_encode([
"name" => "増田健人",
"email" => "masuda@example.com",
"age" => 28
]);
?>