for (let j = 0, len = res.data.kjjList.length; j < len; ++j) {
db.collection(res.data.softName).where({
_id: res.data.kjjList[j]
}).get({
success(res) {
//用于检查j的值
console.log('j:', j)
const k = {
kjj: res.data[0].kjj,
kjjcontent: res.data[0].kjjcontent
}
if(j == len-1){
console.log(len -1)
that.setData({
list: list
})
}}
从log中发现,j的值没有按0、1、2、3、4、5的顺序返回。猜测是云数据库执行查询结果时用时不一致导致的。
这使我们用j作为变量来控制setdata的时机就不对了。
解决方案是在for循环外定义一个变量,