【发布时间】:2021-03-31 21:15:08
【问题描述】:
我正在使用 fetch,据我了解,从不存在的页面获取时应该发生 404 代码,但不会发生 GET 404 错误。我正在使用开放的天气图 api。我得到的错误是GET ${forcastUrl} 404 (Not Found)。
我的 fetch 语句如下所示:
function fetchingForcast(forcastUrl){
fetch(forcastUrl)
.then(validateWeatherResponse)
.then(responseToJSON)
.then(dat => {
forcastDat = dat;
updateforcastPanel();
})
.catch(error=>{
console.log(error);
})
}
function validateWeatherResponse(response){
if (response.ok){
return response;
} else {
throw Error("response.ok: "+ response.ok);
}
validateWeatherResponse 检查响应是否正常,如果不正常,则抛出错误。但是,当它确实抛出错误时,它应该去捕获并 console.log 错误。当我在 chrome 上使用 debug devtool 时,一旦调用 validateWeatherResponse,就会出现错误。
除了这个错误,当我输入正确的网站时,我的代码可以工作。据我了解,不应发生 404 错误,因此我想了解为什么会发生这种情况。 谢谢!
【问题讨论】:
-
我不经常使用 Promise,但我相信您的
validateWeatherResponse需要返回一个 Promise 以允许链接。 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… -
@Will 感谢您的评论!我不认为这是问题,因为根据developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…,查看第一个示例,第二个链/然后接受不返回承诺的函数的参数。
标签: javascript fetch es6-promise