两个集合做联合查询问题
发布于 6 年前 作者 lshi 14618 次浏览 来自 问答
  • 需求的场景描述(希望解决的问题)

如下是代码,在一个for循环中 为什么没有顺序打印j的值,而是在前边j循环打印完0,1 然后才执行下边的代码,而且后边的打印为什么是1,0?

if (e.currentTarget.dataset.index == 1){

var arry_share_record = new Array()

var arry_share_record_title = new Array()

var arry_share_record_process = new Array()

const db = wx.cloud.database({

env: ‘test-240128’

})

//查询分享记录

db.collection(‘process_information_col’).where({

process_chain: db.RegExp({

regexp: user_openid,

options:‘i’

})

}).get().then(res => {

var arry_length = res.data.length

var arry_process_nodef = new Array()

var that=this

console.log(res.data.pro:’,res.data)

for (let j = 0; j < arry_length;j++){

console.log(‘j001:’,j)

arry_share_record_process = res.data[j].process_chain.split(";");

// for (let arry_process_num = 0; arry_process_num < arry_share_record_process.length-1; arry_process_num++){

//   console.log(‘arry_process_num:’, arry_process_num)

//   arry_process_nodef[arry_process_num] = arry_share_record_process[arry_process_num+1]

//   console.log(‘arry_process_nodef:’, arry_process_nodef[arry_process_num])

// }                  

db.collection(‘release_content_col’).where({

_id: res.data[j].id_release_information

}).get().then(

res => {

// console.log(‘arry_process_nodef:’, arry_process_nodef)      

// console.log(‘res.data.rel:’, res.data)                  

arry_share_record[j] = res.data[0]

console.log(‘j002:’, j)

if (j == arry_length-1){

setTimeout(function () {

console.log(‘arry_share_record’, arry_share_record[0])

that.setData({

shareRecordData: arry_share_record

})

}, 1000) //延迟时间 这里是1秒

}

}).catch(err => {

console.log(’[查询失败]’)

})

}

}).catch(err => {

console.log(’[查询失败]’)

})

}

  • 希望提供的能力
1 回复

你这里的arry_length是在前面这里(var arry_length = res.data.length)定义的,里面用let 改下试试,说不定是作用域问题,函数嵌套太多层可能会有偏差

回到顶部