首页 > 其他分享 >关于map或for自动停止循环的问题

关于map或for自动停止循环的问题

时间:2023-05-08 14:33:21浏览次数:35  
标签:map const ctx resdata filter 循环 自动 data icon

问题

在维护一个老项目时发现map循环数组循坏到index为14时就自动不循环了(数组长度为79),并且也不运行后面的代码

代码

// 问题代码
 await useMyFetch('url', {
    afterFetch(ctx) {
      const resdata = safeParse(ctx.data)             // json字符串转换为对象
      const data = resdata.result.items.map((v) => {
        if (v.modelSettings !== null)
          return { ...safeParse(v.modelSettings), id: v.id, icon: v.watchStatus ? watchTypeIconList.filter(x => x.name === v.watchType)[0].onLineIcon : watchTypeIconList.filter(x => x.name === v.watchType)[0].icon }
      })
      console.log(data);
      deviceLabelData.value = data.filter(x => x !== undefined)
      return ctx
    },
  }).post({
    maxResultCount: 999,
    skipCount: 0,
  })

debugger发现当运行到resdata.result.items.map函数中循环到 index为14时就会自动停止 后面的console等函数也没有输出。控制台没有报错。
当我注释掉icon属性后则正常运行。

 await useMyFetch('url', {
    afterFetch(ctx) {
      const resdata = safeParse(ctx.data)             // json字符串转换为对象
      const data = resdata.result.items.map((v) => {
        if (v.modelSettings !== null)
          return {
             ...safeParse(v.modelSettings),
              id: v.id, 
              // icon: v.watchStatus ? watchTypeIconList.filter(x => x.name === v.watchType)[0].onLineIcon : watchTypeIconList.filter(x => x.name === v.watchType)[0].icon   删除掉这条语句后就恢复正常了
              }
      })
      console.log(data);
      deviceLabelData.value = data.filter(x => x !== undefined)
      return ctx
    },
  }).post({
    maxResultCount: 999,
    skipCount: 0,
  })

// 正常运行
  async function getVideoLabelData() {
  await useMyFetch("url",{
      afterFetch(ctx) {
        const resdata = safeParse(ctx.data);
        const data = resdata.result.items.map((v) => {
          if (v.modelSettings !== null)
            return {
              ...safeParse(v.modelSettings),
              id: v.id,
              videoUrl: v.videoAddress,
              icon: v.status
                ? watchTypeIconList.filter((x) => x.name === "xxx")[0]
                    .onLineIcon
                : watchTypeIconList.filter((x) => x.name === v.watchType)[0]
                    .icon,
            };
        });
        videosLabelData.value = data.filter((x: any) => x !== undefined);
        return ctx;
      },
    }
  ).get();
}

猜测是因为js语句的格式不规范问题导致的。(因为另一个函数getVideoLabelData中跟这个函数几乎一模一样但却能正常运行)

修改后则运行正常

async function getDeviceLabelData() {
  await useMyFetch("url", {
    afterFetch(ctx) {
      const resdata = safeParse(ctx.data);
      let data = [];
      for (let index = 0; index < resdata.result.items.length; index++) {
        const v = resdata.result.items[index];
        if (v.modelSettings !== null) {
          let obj = watchTypeIconList.find((x) => x.name === v.watchType);
          let temp = v.watchStatus ? obj?.onLineIcon : obj?.icon;
          data.push({
            ...safeParse(v.modelSettings),
            id: v.id,
            icon: temp,
          });
        }
      }
      deviceLabelData.value = data.filter((x) => x !== undefined);
      return ctx;
    },
  }).post({
    maxResultCount: 999,
    skipCount: 0,
  });

标签:map,const,ctx,resdata,filter,循环,自动,data,icon
From: https://www.cnblogs.com/GoodMemoryBlog/p/17381642.html

相关文章

  • VScode代码自动补全提示
    VScode代码自动补全提示1.打开设置2.搜索Suggest:SnippetsPreventQuickSuggestions,去掉勾选。3.Ctrl+Shift+P打开setting.json文件,添加以下代码//vscode不自动补全添加代码"editor.suggest.snippetsPreventQuickSuggestions":false,"editor.quickSugg......
  • nacos配置自动刷新(不重启应用)
    (一)背景我们平常的开发中经常会遇到需要修改配置的情况,但是又不希望重启应用。以nacos为例子,哪些情况修改完配置不重启应用就可以自动生效呢?下面开始做个简单的测试(二)测试@value注解 @Value("${testa.name}")privateStringname; 经测试,每次在nacos修改完不重启应用是......
  • asyncio.Semaphore
     asyncio.Semaphore是一个异步信号量,用于协调多个协程对共享资源的访问。异步信号量在协程中的使用方式与线程中的普通信号量类似,但是它是非阻塞的。当信号量的计数器为0时,协程将会被阻塞,直到其他协程释放了该信号量。 importasyncioasyncdefworker(semaphore):......
  • 谷歌浏览器自动更新怎么关闭?
    1.右键单击【计算机】——【管理】——【计算机管理本地】——【系统工具】——【任务计划程序】——【任务计划程序库】——这里找到两个和Google自动更新相关的任务计划【GoogleUpdateTaskMachineCore】与【GoogleUpdateTaskMachineUA】,把这两个选项禁用;有的小伙伴们可能有三个......
  • 自动化部署(Gitlab)
    小程序可持续化自动部署一、安装gitlab-runner官方地址:https://docs.gitlab.com/runner/install/windows安装如下:nodejs的环境变量一定要放到系统变量中!!!进入硬盘任意一个目录,下载gitlab-runner.exe文件,根据电脑是64位还是32位下载cd到文件所在目录中,进行注册。命令:./gitl......
  • 使用宝塔面板检测URL状态码是否返回500,并在出现问题时自动重启Nginx脚本
    脚本只支持检测一条url状态码,将url中的网址更改为你需要检测的网址。#!/bin/bashurl="https://www.cnblogs.com/shenjingwa/"status_code=$(curl-o/dev/null-s-w%{http_code}$url)if[$status_code-eq500];then/etc/init.d/nginxrestartfi并在宝塔面板......
  • 如何决定使用 HashMap 还是 TreeMap?
    @[toc]问:如何决定使用HashMap还是TreeMap?介绍TreeMap<k,v>的Key值是要求实现java.lang.Comparable,所以迭代的时候TreeMap默认是按照Key值升序排序的;TreeMap的实现是基于红黑树结构。适用于按自然顺序或自定义顺序遍历键(key)。HashMap<k,v>的Key值实现散列hashCode(),分布是散列的......
  • SpringBoot自动配置原理
    SpringBoot自动配置原理一、什么是SpringBoot的自动配置?SpringBoot的最大的特点就是简化了各种xml配置内容,还记得曾经使用SSM框架时我们在spring-mybatis.xml配置了多少内容吗?数据源、连接池、会话工厂、事务管理···,而现在SpringBoot告诉你这些都不需要了,一切交给它的自动......
  • Node.js躬行记(28)——Cypress自动化测试实践
    最近在研究如何提升项目质量,提炼了许多个用于自测的测试用例,但是每次修改后,都手工测试,成本太高,于是就想到了自动化测试。在一年前已将Cypress集成到管理后台的项目中,不过没有投入到实践中。今天在实践时发现,版本已经到了12.X,当时集成的版本是8.X。一、准备在......
  • Win10打开IE自动跳转至Edge解决办法
    WIN+R输入inetcpl.cpl弹出Internet属性对话窗口点击上面菜单中的【高级】选项滑动右侧滚动条,找到【浏览】项下面的【启用第三方浏览器拓展*】并取消勾选双击IE浏览器图标测试是否生效......