我需要通过fetch()
调用查询一些数据,但我不确定请求是否成功,HTTP-wise:当服务器启动时,URL可能(合法地)命中不存在页。
我想干净利落地处理案件,目前的方法是提出例外:
// the URL is just an example, I did not have anything CORS-enabled (and unavailable) handy, thus the no-cors mode
fetch(`https://cdnjs.com/libraries/sdfsdfsfsdfsdfsdfdf`, {
mode: 'no-cors'
})
.then(r => {
if (!r.ok) {
console.log("page does not exist")
throw Error();
}
// if the page exists, it will return JSON data
return r.json();
})
.then(r => {
console.log(r)
// things with the JSON happen here
})
.catch(err => null)
我希望在return
之后只有Page does not exist
,但是(空)返回会被下一个then()
捕获。
当请求的网址不可用时,这是退出fetch()
的正确方法吗?
答案 0 :(得分:0)
是的,这看起来是正确的。我建议你使用这些功能。 它使抓取更紧凑,更容易阅读。
const url = 'some url';
fetch(url)
.then(handleErrors)
.then(parseJSON)
.then(update)
.catch(displayErrors);
function handleErrors(res){
if(!res.ok){
throw Error(`${res.status}: Couldn't load URL.`);
}
return res;
}
function parseJSON (res){
return res.json().then(function(parsedData){
return parsedData.results[0];
})
}
function update (){
//do something with the data
}
function displayErrors(err){
console.log(err);
}