首页 > 其他分享 >我们写代码注意一点点

我们写代码注意一点点

时间:2022-11-24 22:34:05浏览次数:44  
标签:const log 代码 await 一点点 Promise 注意 promise console

 

优化点一

Render函数最好直接用jsx 函数组建
    <View style={{ flex: 1, backgroundColor: '#F4F5FA' }}>
        <TitLe>
   <View/>

优化点二

函数最好不要超过10行,我判断逻辑拆分,拆细节

优化点三

多个组件层级嵌套,避免使用 props =》子组建props =》子子组建props,一层一层的传值 恰当使用SWR and 局部 context SWR 典型的就是个人主页 Context 举例  

优化点四

调用多个返回依赖
let promise = new Promise((resolve, reject) => { 
  reject("对不起,你不是我的菜");
});
promise.then((data) => {
console.log('第一次success' + data);
  return '第一次success' + data
},(error) => {
console.log(error) }
).then((data2) => {
  console.log('第二次success' + data2);
},(error2) => { 
  console.log(error2) }
).catch((e) => {
  console.log('抓到错误啦' + e);
});
await/async 其实是 Promise 的一种升级版本,使用 await/async 调用异步的时候是从上到下,顺序执行,就像在写同步代码一样,这更加的符合我们编写代码的习惯和思维逻辑,所以容易理解。整体代码逻辑也会更加的清晰  
async function asyncDemoFn() {
  const data1 = await getData1();
  const data2 = await getData2(data1);
  const data3 =  await getData3(data2);
  console.log(data3)
}
await asyncDemoFn()
再来
getData1().then((resData1) => {
  getData2(resData1).then((resData2) => {
    getData3(resData2).then((resData3)=>{
      console.log('resData3:', resData3)
    })
  });
});
碰到这样的情况我们可以试着用 await/async 方式去解这种有多个深层嵌套的问题。
async function asyncDemoFn2() {
  const resData1 = await getData1();
  const resData2 = await getData2(resData1);
  const resData3 =  await getData3(resData2);
  console.log(resData3)
}
await asyncDemoFn2()
Promise.all
Promise.all([getData1(),getData2(),getData3()]).then([])
console.log('res:',res)
})
// 不是要链表    

优化: Promise.all 其中一个 reject 让所有都取不到值

// Promise.all 调用:只要其中一个报错,就得到 [undefined, undefined, undefined]
const [res1, res2, res3] = await Promise.all([
    somePromise1,
    somePromise2,
    somePromise3
  ])
 
改造后代码:
 
// 包裹函数,避免 promise 抛出 reject
const wrapPromise = (promise)=> {
  return new Promise((resolve, reject) => {
    promise
    .then((info) => resolve({ isok: true, info }))
    .catch((err) => resolve({ isok: false, err }))
  })
}
 
 
// Promise.all 调用
 const resArr = await Promise.all([
    // 全部使用 wrapPromise 包裹
    wrapPromise(somePromise1),
    wrapPromise(somePromise2),
    wrapPromise(somePromise3)
  ])
  const [res1, res2, res3] = resArr.map((res) => {
    if (res.isok) {
      // 处理 fulfilled promise 结果的逻辑
      return res.info
    } else {
      // 处理 rejected promise 结果的逻辑
      console.error(res.err)
      return {}
    }
  })
 

标签:const,log,代码,await,一点点,Promise,注意,promise,console
From: https://www.cnblogs.com/xiaoeshuang/p/16923668.html

相关文章

  • Notepad++高亮smali代码的办法
    https://note.youdao.com/s/8TXfC3C2C:\Users\Administrator\AppData\Roaming\Notepad++前面介绍了一些​​工具​​可以反编译dex文件为smali文件,在Android程序逆向分析中......
  • /mirrors_os/ubuntu-releases/[附更新源的代码]
    点击查看代码sudocp/etc/apt/sources.list/etc/apt/sources.list.baksudosed-i"s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g"/etc/apt/source......
  • swagger2的常用注解,传递参数的注意使用方法
    背景介绍:刚开始的时候,在controller层使用@RequestParam的时候,发现这个参数是必须要输入值的,但是我们有时候必须查询的时候允许参数为空,使用这个注解就不行了。在集成了swagg......
  • 代码生成器
    根据数据库中的字段数据自动生成代码,如下:1.添加依赖<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><ve......
  • springboot+vue+element-ui实现文件上传前后台代码+文件上传后台工具类
    //新增模板接口@PreAuthorize("@ss.hasPermi('pshdhx:template:add')")@Log(title="template",businessType=BusinessType.INSERT)@PostMapping("add")@ResponseBodypublic......
  • 后台管理增删查改统一性代码--若依前后端分离版本
    controller:@PreAuthorize("@ss.hasPermi('system:role:list')")//和数据库中的menu中的字段有关系@GetMapping("list")publicTableDataInfolist(SysRolerole){start......
  • 想要做好代码质量,如何破局?
    作者:苗现方想要做好代码质量,我们不得不提什么是代码质量?本文中讨论的代码质量一般是指代码的风格、重复率和复杂度等,代码是技术团队的价值产物,是宝贵的财富,同样代码质量的......
  • Go | 函数注意事项
    细节汇总函数的形参列表可以是多个,返回值列表也可以是多个形参列表和返回值列表的数据类型,可以是值类型、也可以是引用类型函数的命名遵循标识符命名规范,首字母不能是......
  • pat 并查集题目代码详解
    不得不吐槽并查集的题太少了1118:1//一道并查集查询的题目2//需要注意的几个点3//输入的时候在进行合并时,是一个一个输入的,所以需要引入一个变量来存储前一个输......
  • pat 散列题目代码详解
    1002:1//思路很简单,存哈希表直接计算就可以了2//需要注意的几个点3//求最高次数的时候判断当前的系数是否为04//倒着输出的时候注意格式5#include<bits/std......