前端开发那些事儿每天学一点Vue3

做一个简单的执行跟踪记录

2021-09-05  本文已影响0人  自然框架

最近要做一个各种连续操作的功能,步骤比较多,想要看一下执行情况,另外顺便看看执行时间。

一开始是直接手撸的,但是代码多了就很难看,也不好维护。于是做了一个小功能。

记录格式

{
      title: '好像没什么用的标题',
      msg: `开始叙述`,
      t1: window.performance.now(), 
      t2: '记录时间'.
      item: ['做个子记录']
    }

结构比较简单,主要是两个时间,一个是开始时间,一个是结束时间,然后就是叙述执行步骤。

然后就是建立数组存放,然后顺便写一个函数管理一下。

实现代码

/**
 * 一个简单的记录执行过程和使用时间的 log
 */
class ShowLog {
  constructor () {
    this.info = reactive([])
  }

  newLog (title, count = 0) {
    this.info.push({
      title,
      msg: `<br>开始添加【${title}】...`,
      t1: window.performance.now(),
      t2: 0,
      item: []
    })
    if (count > 0) {
      this.info[this.info.length - 1].msg = `<br>开始添加【${title}】,共${count}个...`
    }
    return this.info.length - 1
  }

  start (msg = null, index = this.info.length - 1) {
    const _info = this.info[index]
    _info.t1 = window.performance.now()
    _info.msg += `<br>&nbsp;&nbsp;开始添加【${msg}】...`
  }

  end (id, index = this.info.length - 1) {
    const _info = this.info[index]
    _info.t2 = window.performance.now()
    _info.msg += `添加成功!ID:${id}。用时:${_info.t2 - _info.t1}<br>`
    console.log(`===添加【${_info.title}】成功,表ID:${id}`)
  }

  clear () {
    this.info.length = 0
  }
}

比较简陋,想做一个子记录的,但是还没有想好。
好多功能都写死了,比如只是记录添加的情况,修改和删除都没关,先暂时这么用。

使用方法

// 进度提示信息
  const myLog = new ShowLog()

   myLog.newLog('表')
   let res = await service(tableId, 10, moduleInfo.tableModal, -2, 'meta')
   myLog.end(res.newId)

先做一个实例,然后new一条记录,其实就是加一个数组。
然后开始执行程序,等待结束后开始统计。

因为回调地狱实在太难了,所以用 await 的方式假装成顺序执行。

直到遇到了foreach,和想象的还是不一样。

    cols.forEach(async (col, index) => {
      col.tableId = intTableId
      col.columnId = intTableId + (index + 1) * 10
      col.canNull = 0
      col.columnKind = index === 0 ? 11 : 14
      myLog.start(col.colName, logIndex)
      res = await service(columnId, 10, col, -2, 'meta')
      myLog.end(res.newId, logIndex)
    })

本来以为可以在foreach内部等待呢,结果还是先循环完了,然后再等待。

这样的话,要么试试for循环,要么试试子记录。明天再看吧。

执行情况

开始添加【表】...添加成功!ID:10。用时:36.06000001356006

开始添加【字段】,共4个...  // 子记录没有对上。
  开始添加【col_11】...
  开始添加【col_21】...
  开始添加【col_31】...
  开始添加【col_41】...添加成功!ID:24。用时:137.21499999519438
添加成功!ID:25。用时:220.25499999243766
添加成功!ID:26。用时:254.8399999793619
添加成功!ID:27。用时:289.53999999770895

开始添加【模块菜单】...添加成功!ID:10。用时:165.26000000862405

开始添加【列表的分页】...添加成功!ID:10。用时:154.50999999325722

开始添加【列表的按钮】...
  开始添加【添加】...
  开始添加【修改】...
  开始添加【删除】...添加成功!ID:28。用时:97.73999999742955
添加成功!ID:29。用时:131.25000000558794
添加成功!ID:30。用时:253.2399999909103

开始添加【查询】...添加成功!ID:10。用时:159.71999999601394

  开始添加【查询字段:col_11】...
  开始添加【查询字段:col_21】...
  开始添加【查询字段:col_31】...
  开始添加【查询字段:col_41】...添加成功!ID:24。用时:125.05000000214204
添加成功!ID:25。用时:162.320000003092
添加成功!ID:26。用时:275.0600000144914
添加成功!ID:27。用时:316.6100000087172

开始添加【列表】...添加成功!ID:10。用时:189.93999998178333

  开始添加【列表字段:col_11】...
  开始添加【列表字段:col_21】...
  开始添加【列表字段:col_31】...
  开始添加【列表字段:col_41】...添加成功!ID:24。用时:150.10999998729676
添加成功!ID:25。用时:185.95499999355525
添加成功!ID:26。用时:367.2549999896437
添加成功!ID:27。用时:409.14499998278916

开始添加【表单】...添加成功!ID:10。用时:206.70000000996515

  开始添加【表单字段:col_11】...
  开始添加【表单字段:col_21】...
  开始添加【表单字段:col_31】...
  开始添加【表单字段:col_41】...添加成功!ID:24。用时:232.0049999980256
添加成功!ID:25。用时:269.5300000193529
添加成功!ID:26。用时:298.90000002318993
添加成功!ID:27。用时:336.7650000145659

开始添加【后端service】...添加成功!ID:8。用时:238.51499997545034

开始添加【后端 action】...
  开始添加【添加】...
  开始添加【修改】...
  开始添加【删除】...
  开始添加【获取】...
  开始添加【查询】...
  开始添加【获取全部数据】...添加成功!ID:43。用时:134.85499998182058
添加成功!ID:44。用时:198.4449999872595
添加成功!ID:45。用时:235.93499997537583
添加成功!ID:46。用时:313.46999999368563
添加成功!ID:47。用时:357.6699999975972
添加成功!ID:48。用时:398.1349999960512

开始添加【后端model】...添加成功!ID:8。用时:259.1949999909848

基本就是这样。
好像应该加个 try,我不太喜欢加 try,因为不会用。。。

另外计时不准,for 循环并没有等待。

另外这是我写代码写的最长的一次,居然有四百多行,还是重构后的。不重构的话,实在太累。现在能好一点。

上一篇下一篇

猜你喜欢

热点阅读