// 本代码由 AI 生成 /************************************************ * 模拟一个异步函数,比如:通过网络请求获取数据 * ---------------------------------------------- * - 返回 Promise:在这里,使用 setTimeout * 来模拟 1 秒后返回结果 * - 如果操作成功,调用 resolve;若失败,则调用 reject ************************************************/ function fetchData() { return new Promise((resolve, reject) => { setTimeout(() => { // 模拟一个布尔值来决定成功或失败 const success = true; if (success) { // 成功时,通过 resolve 返回结果 resolve("数据获取成功 —— 来自 fetchData()"); } else { // 失败时,通过 reject 抛出错误信息 reject("数据获取失败 —— 来自 fetchData()"); } }, 1000); }); } /************************************************ * 方式一:使用 Promise 的 then / catch * ---------------------------------------------- * - then(): 用来接收异步操作成功时返回的结果 * - catch(): 用来接收异步操作中的错误信息 ************************************************/ fetchData() .then((data) => { console.log("[Promise] then:", data); }) .catch((error) => { console.error("[Promise] catch:", error); }); /************************************************ * 方式二:使用 async / await * ---------------------------------------------- * - async: 用于声明异步函数,该函数返回一个 Promise * - await: 用于等待一个返回 Promise 的函数执行完毕,并 * 将其返回值赋给一个变量,就像同步代码写法 * - try...catch: 用来捕获异步函数内部可能出现的错误 ************************************************/ async function handleData() { try { // await 等待 fetchData() 返回并获取其返回值 const result = await fetchData(); console.log("[Async/Await] result:", result); } catch (error) { // 如果 fetchData() 内部调用 reject,则会进入到这里 console.error("[Async/Await] error:", error); } } // 调用使用 async/await 写法的函数 handleData();