JS 用 Promise 链模拟网络请求:成功、失败处理及最终操作揭秘
下面是一个使用 JavaScript 的 `Promise` 来实现你描述的功能的例子。这里我们使用 `setTimeout` 来模拟异步的网络请求,并根据设定的时间来决定请求是成功还是失败。 ```javascript // 模拟网络请求的函数 function simulateNetworkRequest(isSuccess) { return new Promise((resolve, reject) => { setTimeout(() => { if (isSuccess) { resolve("请求成功"); } else { reject("请求失败"); } }, 1000); // 假设请求需要1秒时间 }); } // 创建 Promise 链 simulateNetworkRequest(true) // 可以将 true 改为 false 来测试失败的情况 .then(response => { console.log(response); }) .catch(error => { console.error(error); }) .finally(() => { console.log("操作结束"); }); ``` 解释 1. simulateNetworkRequest 函数: - 这个函数接收一个布尔值 `isSuccess`,用于决定模拟的网络请求是否成功。 - 使用 `new Promise` 创建一个新的 Promise 对象。 - 使用 `setTimeout` 模拟异步操作,这里设置为1秒后执行。 - 如果 `isSuccess` 为 `true`,则调用 `resolve` 方法,表示操作成功。 - 如果 `isSuccess` 为 `false`,则调用 `reject` 方法,表示操作失败。 2. Promise 链: - 调用 `simulateNetworkRequest(true)` 创建一个 Promise。 - 使用 `.then` 处理成功的情况,打印 "请求成功"。 - 使用 `.catch` 处理失败的情况,打印 "请求失败"。 - 使用 `.finally` 在所有操作完成后(无论是成功还是失败)打印 "操作结束"。 你可以通过将 `simulateNetworkRequest(true)` 中的 `true` 改为 `false` 来测试失败的情况。 ######[AI写代码神器 | 427点数解答 | 2024-11-12 08:40:30]
- 易语言实现高并发 HTTP 操作:多线程、线程池与异步操作实战(字节豆包 | 849点数解答 | 2025-06-03 23:17:33)296
- Python实现Q老师成绩管理任务:修改与查看学生成绩(字节豆包 | 191点数解答 | 2025-12-20 20:55:41)105
- Python 代码助力 Q 老师高效管理班级学生成绩:修改与查看一键搞定(字节豆包 | 326点数解答 | 2025-12-27 20:48:12)110
- "Debugging 'Cannot Read Properties of Null (reading \'userid\')' Error in Vue Components: Steps and Example"(讯飞星火 | 614点数解答 | 2024-11-28 14:31:57)293
- HTML+jQuery 实现列表元素悬停动画效果:代码详解与注意事项(字节豆包 | 475点数解答 | 2024-12-19 14:58:05)393
- HTML+jQuery:打造动态导航栏动画效果及注意事项(字节豆包 | 495点数解答 | 2024-12-19 14:58:06)337
- HTML+jQuery:打造带动态交互效果的商品展示页面(讯飞星火 | 497点数解答 | 2024-12-19 14:58:18)342
- HTML与jQuery结合:实现商品列表交互动画的首页代码解析(讯飞星火 | 497点数解答 | 2024-12-19 14:58:20)363
- Three.js 示例代码解析:优化场景渲染与注意要点(字节豆包 | 164点数解答 | 2025-02-27 23:30:20)287
- Three.js实现可360°观察正交长方体:代码分析、优化与注意要点(DeepSeek | 466点数解答 | 2025-03-01 11:35:41)269
- 详解银行账户管理代码:开户、存款与取款功能实现(讯飞星火 | 195点数解答 | 2024-08-08 14:53:52)317
- 超详细!逐行解读银行账户管理代码的含义、作用与用法(讯飞星火 | 152点数解答 | 2024-08-08 14:58:48)335