JavaScript基本功之promise

news/2025/2/11 5:33:45/

promise的状态和变化

状态

  • pending: 进行中
  • resolved: 成功
  • rejected: 失败

状态变化

  • pending-resolved =》then回调方法1
  • pending-reject =》then回调方法2(优先级更高) 或 catch方法

then-error和catch哪个先执行?

结论:

  • 测试发现只会执行一个,优先执行onerror
  • Promise.prototype.catch是Promise.prototype.then(null, rejection)的别名
// 定义 promise
function test(){return new Promise((_,reject)=>{// 已知错误和异常错误 2种情形结果一样return reject('程序错误') // "程序错误"// return a.push(1)  // ReferenceError: a is not defined})
}// 测试
test().then(data=>{ // 只有then-errorconsole.log('data=',data)
},error=>{console.error('then error=',error)
})
// 结果: then error= 程序错误test().then(data=>{ // 只有catchconsole.log('data=',data)
}).catch(error=>{console.error('catch error=',error)
})
// 结果: catch error= 程序错误test().then(data=>{ // 既有then-error又有catchconsole.log('data=',data)
},error=>{console.error('then error=',error)
}).catch(error=>{console.error('catch error=',error)
})
// 结果: then error= 程序错误

then-error和catch适用场景?

个人想法:

  • 如果有多个promise链式调用,采用catch更为方便,
  • 如果只有1个promise调用都可以
// 链式调用
Promise.resolve(1).then((data)=>{console.log('data: ',data);return 2;
}).then((data)=>{console.log('data: ',data);return 3;    
}).then((data)=>{console.log('data: ',data);return 4;    
}).then((data)=>{console.log('data: ',data);// a.push('hi'); // 程序性异常 a未定义 return Promise.reject('程序错误');  // 自定义异常
}).then((data)

http://www.ppmy.cn/news/1209966.html

相关文章

【每日OJ—— 206. 反转链表(链表)】

每日OJ—— 206. 反转链表(链表) 1.题目:206. 反转链表(链表)2.方法讲解:2.1解法:2.1.1.图文解析2.1.2.代码实现2.1.3.提交通过展示 1.题目:206. 反转链表(链表&#xff…

Nacos使用指南

Nacos使用指南 1.认识Nacos Nacos是SpringCloudAlibaba的一个组件,遵循SpringCloud规范 2.Nacos的优势 1.支持服务端主动检测服务提供者状态。临时实例采用心跳检测,非临时实例采用主动检测 2.Nacos支持服务列表变更消息推送,消息更加及…

集合贴4——QA机器人设计与优化

基础课21——知识库管理-CSDN博客文章浏览阅读342次,点赞6次,收藏2次。知识库中有什么信息内容,决定了智能客服机器人在回答时可以调用哪些信息内容,甚至可以更简单地理解为这是智能客服机器人的话术库。https://blog.csdn.net/22…

揭秘南卡开放式耳机创新黑科技,核心技术剑指用户痛点

随着科技的进步和人们娱乐方式的升级,大家对听音工具的选择,从传统的耳机到蓝牙耳机再到AirPods这样的真无线耳机,而今年,也有一种全新的耳机爆发式涌入人们之中,那就是开放式耳机。 开放式耳机的出现,满足…

STM32 LL库下ADC + DMA多通道连续扫描采集通道错乱问题记录

cubemx配置ADCDMA转换后,代码在 adc.c 中将ADC_REG_InitStruct.DMATransfer 属性设置为: LL_ADC_REG_DMA_TRANSFER_UNLIMITED 或者 LL_ADC_REG_DMA_TRANSFER_LIMITED(在MX中配置时只有这两选项) ,都会在初始化ADC时同…

Mysql联合查询

Mysql联合查询 T1表结构(用户名,密码) useridusernamepassword1jackpwd12owenpwd2 T2表结构(用户名,密码) useridjifendengji12033506 第一:内联(inner join) 如果想把用户信息、积分、等…

HaaS510开板式DTU真机连云:上报监测数据至阿里云物联网平台

背景 HaaS: Hardware as a Service。 HAAS510 是一种开板式 DTU ,旨在为用户已开发好的设备快速增加 4G 连云能力的 4G CAT1 数传模块。它通过将模组与用户设备集成到一个外壳内,既保持设备的一体性,又降低重新开发 PCB 的时间消耗和模组开…

机器学习模型超参数优化最常用的5个工具包!

优化超参数始终是确保模型性能最佳的关键任务。通常,网格搜索、随机搜索和贝叶斯优化等技术是主要使用的方法。 今天分享几个常用于模型超参数优化的 Python 工具包,如下所示: scikit-learn:使用在指定参数值上进行的网格搜索或…