在异步函数中抛出错误的问题

问题描述 投票:0回答:1

每次调用 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
块中,错误也不会被拒绝。

javascript async-await promise es6-promise
1个回答
0
投票

与JS无关,控制台只是显示网络错误

© www.soinside.com 2019 - 2024. All rights reserved.