我需要通过fetch()
调用查询一些数据,但是我不确定HTTP是否会成功执行该请求:在服务器启动时,URL可能(合法)到达一个不存在的页面。
我想彻底处理此案,而我目前的做法是提出一个异常(exception):
// 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()
捕获。当请求的URL不可用时,这是退出
fetch()
的正确方法吗? 最佳答案
是的,这看起来不错。我建议您在那时使用函数。
它使提取更为紧凑,更易于阅读。
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);
}
关于javascript - 如何彻底处理提取中的预期错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50390550/