我正在尝试让异步等待而无需尝试/捕获
return await fetch(url, options)
.then(res => res.json())
.catch(err => {
throw new Error(err)
})
这是我拨打电话的方式:
const response = await makeApiRequest('/reset', {
password: password1,
code
}, {
noauth: true
}).catch(err => {
debugger;
msg = err.message;
});
if (response) {
navigateTo('/');
}
问题是所有catch块均不起作用。该代码已过期并提供401服务。
答案 0 :(得分:0)
仅当提取API无法发出请求时,该API才会失败。如果可以的话,即使状态为不良,提取也会成功执行。
由于从未调用过throw new Error(err)
,因此仅当您尝试将invalid string content
解析为json对象(res.json()
)时才被调用。我来了,在401的情况下,您的服务器返回了一个有效的json字符串,例如{message: "Unauthorized"}
,然后res.json()
正常工作,并且没有引发任何错误。
如果您想捕获http错误,那么http status code
对象的res
是正确的方法:
return await fetch(url, options)
.then(res => {
if (res.status >= 300) { // error http status code range
throw new Error(res.status) // throw a error to the catch block
}
return res.json();
})
.catch(err => {
throw new Error(err) // catch and throw to the error of previous `.then` block
})
然后重试。
答案 1 :(得分:0)
这就是我要工作的:
{% load xxxxx %}
您可以这样称呼它:
{% load xxxxx %}