每次调用 async 函数时,都会返回一个新的 Promise 这将用异步函数返回的值来解析, 或因异步函数中未捕获的异常而被拒绝。 MDN 文档
根据文档,类似这样的事情应该是可能的:
const foo = async () => {
throw "error in foo";
}
foo()
.then(data => console.log("resolved:", data))
.catch(error => console.log("rejected:", error));
// rejected: error in foo
但是当我在
foo
中使用fetch并且请求失败时,控制台显示一堆错误:
const foo = async () => {
const response = await fetch("https://example.com");
const data = await response.json();
if (!response.ok) {
throw data;
}
return data;
}
foo()
.then(data => console.log("resolved:", data))
.catch(error => console.log("rejected:", error));
(请忽略图标错误)
这不应该发生,因为当抛出错误时,异步函数应该拒绝随后捕获的承诺(如我的第一个片段所示)。 即使我将提取包装在
try-catch
块中,错误也不会被拒绝。
与JS无关,控制台只是显示网络错误