
今天,我发现自己对这两种处理异步操作的方式之间的差异一无所知,所以我决定阅读和研究写这篇文章 – 作为对自己的提醒,谁知道呢,也可以帮助其他开发人员理解这个差异更好。
当时我或多或少知道如何解释,他们都是做同样的事情,then()带来的是解析后的数据,而resolve和reject则用来以成功或错误结束。 async/await 必须等待结果才能继续下一步。这并不完全错误,但可以用更好的方式来解释。
承诺
promise,顾名思义,就是一个数据返回的“promise”,会经历三个主要状态:
pending:初始状态,当 promise 尚未解决或拒绝时。已完成:操作已成功完成。已拒绝:操作失败,错误被捕获。
const minhapromise = new promise((resolve, reject) => { let sucesso = true; // apenas um exemplo condicional if (sucesso) { resolve("operação concluída com sucesso!"); } else { reject("ocorreu um erro na operação."); }});
承诺链
这是在 async/await 之前处理 promise 的最常见方式。我们使用 then()、catch() 和 finally() 方法。
then():用于接收并操作解析成功的数据。catch():用于处理promise被拒绝时的错误。finally():用于执行代码,无论结果如何。
minhapromise .then((mensagem) => { console.log(mensagem); // "operação concluída com sucesso!" }) .catch((erro) => { console.error(erro); // se der erro, isso será executado. }) .finally(() => { console.log("finalizando a execução da promise"); // sempre será executado. });
异步/等待
标记为 async 的函数会自动返回 promise,而 await 用于“暂停”执行,直到 promise 得到解决。
async function buscarDados() { try { const response = await fetch("https://jsonplaceholder.typicode.com/todos/1"); const data = await response.json(); console.log("Dados recebidos:", data); } catch (error) { console.error("Erro ao buscar dados:", error); }}buscarDados();
区别
链式 promise 会导致代码变得非常嵌套,尤其是当我们连续使用多个 then() 时,使阅读变得更加困难。
async/await 允许您以更类似于同步代码的方式编写异步代码,使逻辑更易于阅读和理解。代码变得更加清晰,尤其是当我们需要处理多个异步操作时。
此外,使用 try/catch 和 async/await 来处理错误的方式比仅在 promises 中使用 catch 更直观。
以上就是Promise Chaining 和 Aync/await 有什么区别的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1497438.html
微信扫一扫
支付宝扫一扫