【发布时间】:2019-07-29 09:58:31
【问题描述】:
我正在尝试编写一个通用的getData() 函数,我可以使用不同的 url 调用它,并在从服务器返回数据时采取不同的操作。
function getData(url){
console.log("loading: " + url)
return fetch(url)
.then((response) => {
console.log("received response")
console.log(response.status)
if(response.status >= 200 && response.status < 300) {
console.log("url returned data...")
return response.json()
} else {
console.log("url did not return data...")
throw new Error("The url did not return data")
}
})
.catch((err) => {return err})
}
getData("notexisting.json")
.then(data => console.log("success!!"))
.catch(err => console.log("error!!"))
问题是这段代码sn-p即使url不存在也没有显示错误。另外,if 语句中的两个console.logs 永远不会到达,getData() 函数总是成功的......即使有错误......
【问题讨论】:
-
getData()内部的.catch()不会引发异常,因此不会调用 外部 函数的.catch()调用。 -
啊,当我用
throw err替换return err时,它可以工作,谢谢!
标签: javascript ajax promise fetch