关于ajax同步异步处理循环遍历及push时发生的疑问
Posted shenwu555
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于ajax同步异步处理循环遍历及push时发生的疑问相关的知识,希望对你有一定的参考价值。
今天写了一个简单的ajax请求,其中因为一些需求 渲染过程没有写在回调函数内,要在外部访问遍历后的数组进行渲染,第一次写时图片如下图
此时console.log(arr)打印出来的内容是一个长度为0,包含十条完整数据的数组,如下图
此时,当我访问arr[0]或者arr[1]时,均会出现undefined提示,
开始的时候我一直认为是数组操作的问题,在这个方向上努力了半天,发现方向可能是错的,最后觉得可能是因为ajax默认的异步请求,所以将请求改成了同步,如下图
此时打印的内容变成了想要的需求,如下图
这样的话,我实际上的需求已经达成了,等我活忙完了回过头来反思,发现不能理解其中到底发生了什么,如果是因为异步请求,导致循环和push没完成就打印了arr,那么arr内应该是一个拥有不完整数据的数组,但打印出来的内容却是一个拥有完整的10条数据且长度为0的数组,也就是说,异步请求时循环遍历以及push的过程已经结束了,不然不可能有完整的10条数据,但为什么打印出来的arr却是一个没有长度数据完整的数组呢?
希望路过的大神能给解答一下,感激不尽
以上是关于关于ajax同步异步处理循环遍历及push时发生的疑问的主要内容,如果未能解决你的问题,请参考以下文章
ajax同步异步设置导致的问题及return返回值(返回ajax请求的数据)