博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
返回Promise对象的函数,函数内部记得加try catch!
阅读量:4030 次
发布时间:2019-05-24

本文共 835 字,大约阅读时间需要 2 分钟。

经验总结

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

代码示例

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

如下截图来自

在这里插入图片描述
如果在微信小程序开发者工具的console中看 “Uncaught (in promise) thirdScriptError”
在这里插入图片描述
就意味着你们代码中或调用的接口(第三方SDK)使用Promise时没有使用try catch了

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

经验来源

在修复 后,测试同事反馈 SDK的某些接口在断网的时候调用没有返回值(没有相关的日志输出),然后自己去撸SDK的代码。由于之前也不是专门写JS代码的,同时对SDK的业务逻辑也不熟悉,所以还是采用了较低效的日志输出,去查排查问题的代码点。因为方法的内部流程中又调用了返回值是promise的接口,即promise是多层嵌套的 (这个当时头就大了,直觉告诉我,这不可能是最佳实践呀!)

在二分法的原侧下不断的加日志输出,最后定位到是嵌套的第二层promsie的函数内部没有加try catch,然后在断网的情况下,触发了逻辑上的异常,导致没有reject或resolve的回调。最终最外层的接口亦没有回调。

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

在这里插入图片描述

参考文档

转载地址:http://ekmbi.baihongyu.com/

你可能感兴趣的文章
[LeetCode By Python]118. Pascal's Triangle
查看>>
[LeetCode By Python]121. Best Time to Buy and Sell Stock
查看>>
[LeetCode By Python]122. Best Time to Buy and Sell Stock II
查看>>
[LeetCode By Python]125. Valid Palindrome
查看>>
[LeetCode By Python]136. Single Number
查看>>
[LeetCode By Python]167. Two Sum II - Input array is sorted
查看>>
[LeetCode BY Python]169. Majority Element
查看>>
[LeetCode By Python]172. Factorial Trailing Zeroes
查看>>
[LeetCode By MYSQL] Combine Two Tables
查看>>
python jieba分词模块的基本用法
查看>>
[CCF BY C++]2017.12 最小差值
查看>>
[CCF BY C++]2017-12 游戏
查看>>
如何打开ipynb文件
查看>>
[Leetcode BY python ]190. Reverse Bits
查看>>
面试---刷牛客算法题
查看>>
Android下调用收发短信邮件等(转载)
查看>>
Android中电池信息(Battery information)的取得
查看>>
SVN客户端命令详解
查看>>
Android/Linux 内存监视
查看>>
Linux系统信息查看
查看>>