在没有 'await' 或 'Promise.catch' 的情况下,如何在本地捕获未处理的承诺拒绝

How can I catch an unhandled promise rejection locally without 'await' or 'Promise.catch'

const asyncThrowSampleApiFunction = async () => {
  throw new Error('SOMETHING');
};

const MyComponent = (SomeApiFunction) => {
  try {
    SomeApiFunction();
  } catch (err) {
    handleMyError(err);
  }

  return ...;
};

const c = MyComponent(() => {
  asyncThrowSampleApiFunction();    // call async function without 'await' or 'Promise.catch'
});

有没有办法在没有 Promise.catchawait 的情况下捕获未处理的承诺拒绝?

React.useEffect中,我们经常使用不带await语句的async函数调用。我想处理 React.useEffect.

中可能出现的异步错误

所以我想捕获未处理的承诺拒绝,但我只能找到一种 global 方法来捕获这些拒绝类型。

(例如 window.addEventListener('unhandledrejection', ...);

我想自己制作ErrorBoundary。所以我需要在本地捕获这些拒绝。

有什么办法可以抓到它们吗?

谢谢。

How can I catch an unhandled promise rejection locally without 'await' or 'Promise.catch'

您必须在某处使用 .catch().then() 的第二个参数或用 try/catch 括起 await 来捕获被拒绝的承诺。这是你仅有的三个选择。

所以,从技术上讲,如果您正在寻找与 await.catch() 不同的东西,您可以使用 .then() 的第二个参数 - 虽然我怀疑那不是你真正想要的被要求在这种情况下,没有其他选择。