当前位置: 首页 > news >正文

报错:为什么数组明明有内容但打印的length是0

文章目录

    • 一、问题
    • 二、分析
    • 三、解决
      • 1.将异步改为同步
      • 2.设置延迟

一、问题

在日常开发中,for 循环遍历调用接口,并将接口返回的值进行拼接,即push到一个新的数组中,但是在for循环内部是可以拿到这个新的数组,而for循环外这个新的数组时空,打印的长度也是0
在这里插入图片描述

二、分析

因为我们拼接的数据是从接口请求的,而接口请求发送的ajax请求是异步的,因此遇到这种情况,基本上都是一点,你的数组数据来源是异步请求产生的(例如 ajax/axios ),就比如你在ajax的success回调中没有直接使用这个数据,而是赋予了一个全局变量,你此时在ajax的下方打印这个全局变量,便会出现上面的数组有值而长度为0的状况

如此现象呢就是因为你的异步请求还在请求过程中,但是你的代码已经走到了打印那一行,全局变量是个空数组没赋值,我们打印的是这个变量的引用地址,异步赋值之后,因为是地址引用,那个数组已经被修改了。那个时候的数组长度确实还是0。但这个数组包含修改后的数据。

三、解决

1.将异步改为同步

//利用 async和await
async function(){await axios.post('') }
$.ajax({url: '',data: {},dataType: 'json',async:true,//同步属性设置为true type: 'post',success: function(obj) {}
})

2.设置延迟

setTimeout(() => {//代码}, 1000);  //1秒后执行代码
http://www.lryc.cn/news/158586.html

相关文章:

  • go gin gorm连接postgres postgis输出geojson
  • 4. Java 的线程安全机制之`volatile`
  • ​Vue + Element UI前端篇(二):Vue + Element 案例 ​
  • Qt5中connect信号槽无效问题 C++
  • 服务端 TCP 连接的 TIME_WAIT 过多问题的分析与解决
  • 【Unity3D赛车游戏优化篇】【十】汽车粒子特效和引擎咆哮打造极速漂移
  • 肖sir__设计测试用例方法之编写测试用例12
  • Android 11.0 ota升级之Systemui下拉状态栏quick_settings_tiles_default值减少时更新的功能实现
  • Android Studio中创建java项目
  • 冠达管理:“旺季”来临,煤炭板块走高,云煤能源、陕西黑猫涨停
  • 【EI检索】第四届公共卫生与数据科学国际学术研讨会(ICPHDS 2023)
  • 对时序数据进行分类与聚类
  • Win10如何找回图片查看器
  • 【脑机接口】基于运动想象的康复指导在脑卒中偏瘫患者中的应用
  • vue-cli中vuex下$store”未在实例上定义
  • AutoSAR配置与实践(实践篇)12.1 BSW WatchDog功能的配置和实现
  • 【UI自动化测试】Jenkins配置
  • C#使用DataTable的Select方法来选择特定的字段
  • 总结梳理HTTP状态码
  • MySQL 8.0(winx64)安装笔记
  • vue封装wangEditor
  • 【Spring Boot 源码学习】深入 FilteringSpringBootCondition
  • docker 笔记6:高级篇 DockerFile解析
  • 微信小程序navigateTo进入页面后返回原来的页面需要携带数据回来
  • Python照片压缩教程详解
  • 软路由的负载均衡设置:优化网络性能和带宽利用率
  • CH06_第一组重构(上)
  • RHCSA-VMware Workstation Pro-Linux基础配置命令
  • YOLO-NAS详细教程-姿势估计实现
  • 【扩散模型 李宏毅B站教学以及基础代码运用】