今天,我对这两种处理异步操作的方式之间的区别一无所知,所以我决定阅读和研究写这篇文章 - 作为对自己的提醒而且,谁知道呢,也许可以帮助其他开发人员更好地理解这种差异。
当时我或多或少知道如何解释,他们都是做同样的事情,then()带来的是解析后的数据,而resolve和reject则用来以成功或错误结束。 async/await 必须等待结果才能继续下一步。这并不完全错误,但可以用更好的方式来解释。
Promise,顾名思义,就是一个数据返回的“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() 方法。
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 有什么区别的详细内容。更多信息请关注PHP中文网其他相关文章!