如何处理错误并正确使用 Promise

2024-04-11

首先,我正在对我发布的这个问题进行跟进不久前 https://stackoverflow.com/questions/53940043/unhandledpromiserejectionwarning-this-error-originated-either-by-throwing-insid/53940086?noredirect=1#comment94720078_53940086

现在,我以为我了解 Async 和 Promise,但显然我错过了一些东西。

参考由 estus 标记的答案 https://stackoverflow.com/questions/51535455/express-js-use-async-function-on-requests/51538169#51538169,

除非 API 支持 Promise,否则错误应该完全在 异步函数。函数体应该用 try..catch 包裹起来 排除未处理的拒绝,这可能会导致将来出现异常 节点版本

从中我能够理解每当我们使用异步函数我们想做错误处理我们需要使用try..catch对于正常的 Promise 我们可以简单地做解决/拒绝或者如果它已经是一个承诺那么我们可以链接并执行.then and .catch但为此我得到了以下评论回复

是的,您可能会遇到错误。 async/await 只是语法糖 原始的承诺。任何异步函数都可以用普通 ES6 重写

我可能会广泛讨论这个问题,但有人可以帮我解释一下吗?

我们什么时候需要使用

.then and .catch

我们什么时候需要使用

try..catch

另外,这是什么意思

除非 API 支持 Promise


异步等待代码看起来更干净且易于阅读。创建 Promise 是为了解决回调地狱问题,但链接大量 Promise 也令人困惑。因此,异步等待是一种语法糖,您可以使用 .then 或异步等待中的任何一个。

如果您使用简单的 Promise 语法,那么您可以使用 .then.then.then.catch() 语法。

如果你使用async和await那么你必须使用try catch。所有的等待都将进入尝试,而捕获条件将进入单个捕获。

当您使用的 API/函数返回 Promise 时,可以使用这两种方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何处理错误并正确使用 Promise 的相关文章