推荐答案
// www.javascriptcn.com code example
// 使用 Promise
function fetchData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
const data = { message: "Data fetched successfully" };
resolve(data);
}, 1000);
});
}
fetchData()
.then((data) => {
console.log(data.message);
})
.catch((error) => {
console.error(error);
});
// 使用 async/await
async function fetchDataAsync() {
try {
const data = await fetchData();
console.log(data.message);
} catch (error) {
console.error(error);
}
}
fetchDataAsync();本题详细解读
Promise 的用法
Promise 是 JavaScript 中用于处理异步操作的对象。它有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。通过 then 和 catch 方法可以分别处理成功和失败的情况。
new Promise(executor): 创建一个新的 Promise 对象。executor是一个函数,它接受两个参数:resolve和reject。resolve用于将 Promise 状态从pending变为fulfilled,而reject用于将状态从pending变为rejected。then(onFulfilled, onRejected): 用于指定当 Promise 状态变为fulfilled或rejected时的回调函数。onFulfilled是成功时的回调,onRejected是失败时的回调。catch(onRejected): 用于指定当 Promise 状态变为rejected时的回调函数。它是then(null, onRejected)的简写形式。
async/await 的用法
async/await 是 ES2017 引入的语法糖,用于简化 Promise 的使用。async 关键字用于声明一个异步函数,而 await 关键字用于等待一个 Promise 的解决。
async function: 声明一个异步函数。异步函数会自动返回一个 Promise 对象。如果函数内部返回一个值,Promise 将会以该值resolve;如果函数内部抛出异常,Promise 将会以该异常reject。await: 用于等待一个 Promise 的解决。await只能在async函数内部使用。它会暂停async函数的执行,直到 Promise 状态变为fulfilled或rejected。如果 Promise 成功解决,await表达式会返回解决的值;如果 Promise 被拒绝,await会抛出异常。
示例解析
Promise 示例:
fetchData函数返回一个 Promise,模拟异步操作(如网络请求)。- 使用
then方法处理成功的情况,catch方法处理失败的情况。
async/await 示例:
fetchDataAsync是一个异步函数,使用await等待fetchData的解决。- 使用
try/catch结构来处理成功和失败的情况。
通过 async/await,代码看起来更像同步代码,更易于理解和维护。