在JavaScript中,Promise
、async
和await
是用于处理异步操作的核心概念。它们帮助我们更好地组织异步代码,避免回调嵌套问题,并使代码更简洁和易读。
1. Promise
Promise
是一种异步编程的解决方案,用于表示一个操作的最终完成(或失败),以及它所产生的结果。
-
状态:
pending
:Promise 初始状态,既没有被解决也没有被拒绝。fulfilled
:操作成功完成,Promise 已被解决。rejected
:操作失败,Promise 被拒绝。
-
用法:
then()
:当Promise成功时执行回调。catch()
:当Promise被拒绝时执行回调。finally()
:无论Promise成功或失败,都会执行的回调。
创建一个Promise:
let promise = new Promise((resolve, reject) => {
let success = true;
if (success) {
resolve("Operation succeeded!");
} else {
reject("Operation failed.");
}
});
promise
.then(result => console.log(result)) // 如果成功,输出 "Operation succeeded!"
.catch(error => console.log(error)) // 如果失败,输出 "Operation failed."
.finally(() => console.log("Operation completed."));
下面是一个更实际的 Promise
示例,模拟了从数据库中获取用户数据的场景。假设我们有一个函数 getUserData
,该函数通过异步操作从“数据库”中获取用户信息,并返回一个 Promise
。在操作过程中,可能会成功获取数据,也可能会发生错误(如数据库连接失败)。
示例代码:
// 模拟数据库操作的函数,返回一个 Promise
function getUserData(userId) {
return new Promise((resolve, reject)