这是个老问题了
包括H5里面循环嵌套ajax请求,axios请求都会出现异步执行的问题
解决的核心思想就是递归调用
问题描述
直接上代码:
for(var i = 0;i < Array_Id.length;i ++){
db.collection('Statistics_Info').doc(Array_Id[i]).get({
success(res){
console.log(i)
}
})
}
乍一看这段程序会认为输出0,1,2
事实是
连续三个3,意思就是说我for循环都执行完了,这个success函数才被调用
如何解决?当然是递归了,你success不执行成功就不进入下一趟循环
代码如下:
function getId(i){
if(i == Array_Id.length) return;
db.collection('Statistics_Info').doc(Array_Id[i]).get({
success(res) {
console.log(i)
getId(i+1)
}
})
}
getId(0)
有点算法基础的同学应该都很好理解吧?
最后执行结果
该方法在循环发送ajax、axios请求中同样适用