vue3 问递归算法中解决ajax访问题

在后端开发中,要遵守的一个规则是不能在循环中访问接口。在前端开发中,推荐也可以遵守这条规则。主要是因为这样的效率高效。

浏览器第一次试探访问option,第二次才正常访问接口,所以要尽可能的减少ajax的访问。主要的策略是首先去重,然后按照顺序执行完一个接口再访问另外一个接口。

去重

在接口中,参数相同的参数,可以先梳理出来,放在一个数组里;如果参数已经存在的,可以直接pass过。

顺序访问接口

遍历存放参数的数组,然后运用async awati组合,待一个接口访问结束之后,再执行一个接口,并将返回的数据,放入一个对象中如:{"tiantianld":[]},这种结构。

最后将参数进行赋值

递归算法

forEach在遍历是,会将值回调给原来的数组。在存在子级时,就会调用递归算法,当不存在时,退出递归算法

<script setup>
import { onMounted, reactive, ref } from 'vue';

const treeData = ref([
  {
    title: '张三1', key: '1', children: [
      {
        title: '张三12', key: '12', children: [
          { title: '张三13', key: '13', children: [] },
          { title: '张三14', key: '14', children: [] },
          { title: '张三15', key: '15', children: [] },
          { title: '张三16', key: '16', children: [] },
        ]
      },
      { title: '张三2', key: '21', children: [] },
      { title: '张三22', key: '22', children: [] },
      { title: '张三23', key: '23', children: [] },
      { title: '张三24', key: '24', children: [] },
      { title: '张三25', key: '25', children: [] },
    ]
  },
  { title: '张三3', key: '31', children: [] },
  { title: '张三4', key: '41', children: [] },
  { title: '张三5', key: '51', children: [] },
])
onMounted(() => {
  setNodeTree(treeData.value)
})

const setNodeTree = (node, num = 0, type = 0) => {
  node.forEach((item) => {

    //当存在子级时,执行递归算法
    if (item.children.length > 0) {
      setNodeTree(item.children, num, type)
    } else {

    }
  })
}

</script>

<template>
  <main>


  </main>
</template>
<style scoped lang="less"></style>

以上是自己在使用前端开发过程中对遍历中使用ajax的一些整理,喜欢的小伙伴记得一键三连

  • 19
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在Vue2,diff算法是一种对比算法,用于比较旧虚拟DOM和新虚拟DOM,找出哪个虚拟节点发生了更改,并只更新这个虚拟节点所对应的真实节点,而不更新其他数据没有发生改变的节点,以提高效率。\[2\]然而,这种机制在处理复杂的DOM结构时可能会导致性能低下和内存消耗。因此,在Vue3,引入了一种新的diff算法,它只会对比变动的值,而不会对不变的数据进行对比。Vue3会查找模板不同的数据,如果发现数据有不同就重新渲染模板,这样可以提高性能。此外,Vue3还引入了一种新的标记机制,将变量赋值给flag1,将不变的值赋值给flag,以便更好地区分变动的值和不变的值。因此,Vue3的diff算法相比Vue2具有更好的性能。\[3\] #### 引用[.reference_title] - *1* *2* [Vue2 的 diff 算法](https://blog.csdn.net/m0_74076766/article/details/127934908)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Vue2 diff 算法Vue3 diff算法 区别](https://blog.csdn.net/m0_57904695/article/details/121741751)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值