当前位置: 首页 > ds >正文

什么是promise

1.Promise 是 JavaScript 中用于处理异步操作的一种机制,它使得异步代码更易于编写和阅读。Promise 表示一个异步操作的最终完成(或失败)及其结果值。

2.有三种状态:pending(执行中)、fulfilled(已成功)、reject(已失败)

3.使用Promise可以更好地处理异步操作,避免了回调地狱(callback hell)的问题。通过使用Promise,可以将异步操作的结果以更直观、可读性更高的方式进行处理,而不需要嵌套多层回调函数

getUserData('123', function(user) {console.log('获取用户数据成功:', user);getOrders(user.id, function(orders) {console.log('获取订单数据成功:', orders);getOrderDetails(orders[0].id, function(details) {console.log('获取订单详情成功:', details);processPayment(details, function(paymentResult) {console.log('支付结果:', paymentResult);}, function(paymentError) {console.error('支付失败:', paymentError);});}, function(orderDetailsError) {console.error('获取订单详情失败:', orderDetailsError);});}, function(ordersError) {console.error('获取订单失败:', ordersError);});}, function(userError) {console.error('获取用户数据失败:', userError);
});

用Promise:

const getUserData=(userId)=> {new Promise((resolve, reject) => {//操作逻辑});
}
const getOrders=(userId)=> {new Promise((resolve, reject) => {//操作逻辑});
}
const getOrderDetails=(orderId)=> {new Promise((resolve, reject) => {//操作逻辑});
}
const processPayment=(details)=> {new Promise((resolve, reject) => {//操作逻辑});
}getUserData("123").then(user => {console.log("获取用户数据成功:", user);return getOrders(user.id);}).then(orders => {console.log("获取订单数据成功:", orders);return getOrderDetails(orders[0].id);}).then(details => {console.log("获取订单详情成功:", details);return processPayment(details);}).then(paymentResult => {console.log("支付结果:", paymentResult);}).catch(error => {console.error("发生错误:", error);});

优点

  • ✅ 链式调用清晰:每个步骤只处理一件事。
  • ✅ 统一错误处理:只需一个 .catch() 捕获所有错误。
  • ✅ 逻辑顺序明确:更容易理解和调试。
  • ✅ 易于扩展和重构
http://www.xdnf.cn/news/10590.html

相关文章:

  • UI 设计|提高审美|极简扁平过时吗?
  • “人单酬“理念:财税行业的自我驱动革命
  • ZLG ZCANPro,ECU刷新,bug分享
  • 系统架构设计师(一):计算机系统基础知识
  • 【C++高级主题】命令空间(六):重载与命名空间
  • 8天Python从入门到精通【itheima】-60~61
  • 笔试笔记(运维)
  • LeetCode - 965. 单值二叉树
  • 计算机网络第1章(下):网络性能指标与分层模型全面解析
  • PCB设计教程【强化篇】——USB拓展坞PCB布线
  • javaEE->多线程:定时器
  • 【Hot 100】45. 跳跃游戏 II
  • Python训练第四十一天
  • 【创新实训个人博客】实现了新的前端界面
  • CP4-OFDM模糊函数原理及仿真
  • 三方接口设计注意事项
  • 人工智能在智能能源管理中的创新应用与未来趋势
  • ContentProvider URI匹配机制详解
  • DELETE 与 TRUNCATE、DROP 的区别
  • 【Java基础】Java基础语法到高级特性
  • Canvas: trying to draw too large(256032000bytes) bitmap.
  • 02.上帝之心算法用GPU计算提速50倍
  • Java对象的内存结构
  • 华为IP(7)
  • 工作流引擎-04-流程引擎(Process Engine)activiti 优秀开源项目
  • 【AI论文】SWE-rebench:一个用于软件工程代理的任务收集和净化评估的自动化管道
  • 搭建基于VsCode的ESP32的开发环境教程
  • PTA-根据已有类Worker,使用LinkedList编写一个WorkerList类,实现计算所有工人总工资的功能。
  • “候选对话链”(Candidate Dialogue Chain)概念
  • DAY18C语言笔记