我正在使用async await
来呼叫fetch
,但我不清楚如何取消结果,以及如果取指失败则返回什么。
(例如,因为网址不正确)。
async loadJSON(url) {
try {
let res = await fetch(url)
return res.json()
}
catch (err) {
// do I need to create a new promise here and reject it?
// or can I just return false?
return // erm...
}
}
// calling the function, preferably without using try catch here
let result = await loadJSON("bla.php")
修改
我希望我的所有提取和错误处理代码都在loadJSON
内,因此我不需要在应用程序周围散布try catch
。
答案 0 :(得分:0)
我会这样写:
function loadJson(url) {
return fetch(url)
.then(res => res.json())
.then(data => ({ isSuccess: true, data }))
.catch(error => ({ isSuccess: false, error }))
}
然后:
let result = await loadJson("bla.php")
然后:
if (result.isSuccess) {
// result.data
} else {
// result.error
}
或者:
return result.isSuccess ? result.data : result.error