返回Promise对象的函数,函数内部记得加try catch!

经验总结

如题,函数内部实现记得加try catch的具体意思是,在函数的实现流程中,最外层需要加个try catch并在catch中调用reject(err)接口,确定返回的promise是有回调的。本质需求是函数的所有分支的结束需要调用resolve或reject,确保你的promise是有回调的,否侧你是给自己或者团队成员挖坑了!
代码示例

//ts代码
public async fun() : Promise<any> {
return new Promise<any>( async(resolve, reject) => {
    //最外层
	try {
		resolve("ok")
	} catch (e) {
		reject(e)
	}
}
}

如下截图来自async/await ES6 Promise 的最佳实践(经验分享)
在这里插入图片描述
如果在微信小程序开发者工具的console中看 “Uncaught (in promise) thirdScriptError”
在这里插入图片描述
就意味着你们代码中或调用的接口(第三方SDK)使用Promise时没有使用try catch了

建议:有关Promise的最佳实践,推荐大家一起来学习我下面收集的文章(参考文档

经验来源

在修复使用SocketTask,弃用wx 后,测试同事反馈 SDK的某些接口在断网的时候调用没有返回值(没有相关的日志输出),然后自己去撸SDK的代码。由于之前也不是专门写JS代码的,同时对SDK的业务逻辑也不熟悉,所以还是采用了较低效的日志输出,去查排查问题的代码点。因为方法的内部流程中又调用了返回值是promise的接口,即promise是多层嵌套的 (这个当时头就大了,直觉告诉我,这不可能是最佳实践呀!)
在二分法的原侧下不断的加日志输出,最后定位到是嵌套的第二层promsie的函数内部没有加try catch,然后在断网的情况下,触发了逻辑上的异常,导致没有reject或resolve的回调。最终最外层的接口亦没有回调。

如下是网上有关嵌套promise的建议

在这里插入图片描述

参考文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值