使用Promise
Promise是一个代表异步操作最终完成或失败的对象。它有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。
function getData() {
return new Promise((resolve, reject) => {
// 模拟异步操作
setTimeout(() => {
try {
// 假设我们从某个API获取了数据
const data = { message: 'Hello, Promise!' };
resolve(data); // 异步操作成功,调用resolve函数
} catch (error) {
reject(error); // 异步操作失败,调用reject函数
}
}, 1000);
});
}
// 使用.then()和.catch()处理Promise
getData()
.then(data => {
console.log(data); // 输出: { message: 'Hello, Promise!' }
})
.catch(error => {
console.error('Error:', error);
});
使用async/await
async/await是基于Promise的,它使得异步代码看起来像同步代码一样。async函数总是返回一个Promise,而await只能用在async函数内部,用于等待一个Promise。
async function getDataAsync() {
try {
// 模拟异步操作
const data = await new Promise((resolve, reject) => {
setTimeout(() => {
try {
const data = { message: 'Hello, async/await!' };
resolve(data);
} catch (error) {
reject(error);
}
}, 1000);
});
console.log(data); // 输出: { message: 'Hello, async/await!' }
} catch (error) {
console.error('Error:', error);
}
}
// 调用async函数
getDataAsync();