我想知道是否有一種方法,如果我的請求花費超過 20 秒,我可以顯示一個警報,提醒用戶 API 中的錯誤。所以他們可以重繪 頁面或稍后再回來。
類似 response.status 的東西。
我不需要 setTimeout 和 AbortController。只需檢測回應并觸發警報。
const envSoli = async () => {
try {
let peticion = await fetch("data.php", {
method: "POST",
body: "ajax=1&do=check&lista=" encodeURIComponent(leray[chenille]),
headers: { "Content-type": "application/x-www-form-urlencoded" },
cache: "no-cache"
});
let oreen = await peticion.json();
switch (oreen.enviando) {
case -1:
chenille ;
document.getElementById("div1").append(oreen.cat "<br />");
updateProgress(chenille, leray.length);
tvmit_wrongUp();
break;
case 1:
chenille ;
document.getElementById("div1").append(oreen.dog "<br />");
updateProgress(chenille, leray.length);
tvmit_wrongUp();
break;
case 2:
chenille ;
document.getElementById("div2").append(oreen.sky "<br />");
nieva ;
updateProgress(chenille, leray.length);
tvmit_dieUp();
break;
case 3:
chenille ;
document.getElementById("div3").append(oreen.water "<br />");
tvmit_liveUp();
updateProgress(chenille, leray.length);
break;
}
OKTY(leray, chenille, aarsh, nieva);
return true;
} catch (error) {
console.log(error)
}
}
envSoli();
uj5u.com熱心網友回復:
您需要setTimeout將 設定timer為 20 秒,并且在fetch請求之后,如果請求時間少于 20 秒,請清除timeout
const envSoli = async () => {
try {
let timeId = setTimeout(() => alert('The request take more than 20 sec'), 20 * 1000); // 20 sec
let peticion = await fetch("data.php", {
method: "POST",
body: "ajax=1&do=check&lista=" encodeURIComponent(leray[chenille]),
headers: { "Content-type": "application/x-www-form-urlencoded" },
cache: "no-cache"
});
clearTimeout(timeId)
let oreen = await peticion.json();
switch (oreen.enviando) {
case -1:
chenille ;
document.getElementById("div1").append(oreen.cat "<br />");
updateProgress(chenille, leray.length);
tvmit_wrongUp();
break;
case 1:
chenille ;
document.getElementById("div1").append(oreen.dog "<br />");
updateProgress(chenille, leray.length);
tvmit_wrongUp();
break;
case 2:
chenille ;
document.getElementById("div2").append(oreen.sky "<br />");
nieva ;
updateProgress(chenille, leray.length);
tvmit_dieUp();
break;
case 3:
chenille ;
document.getElementById("div3").append(oreen.water "<br />");
tvmit_liveUp();
updateProgress(chenille, leray.length);
break;
}
OKTY(leray, chenille, aarsh, nieva);
return true;
} catch (error) {
console.log(error)
}
}
envSoli();
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/506193.html
標籤:javascript 获取 API
上一篇:如何拆分字串并僅回傳剩余值?
