云开发数据库在真机上无法并发获取数据
发布于 6 年前 作者 csong 642 次浏览 来自 问答
  • 当前 Bug 的表现(可附上截图)

我简化了一下我的代码:

我需要查询某个place两周(14天)内的状态,故把14个Promise放进了promises里,然后使用Promise.all来并发执行,(因为之前我的做法是串行执行14个查询,但这样太慢了,每次需要3秒左右)

exports.getStatus = async (placeId) => {

 const date = new Date()

 const promises = new Array()

 for (let i = 0; i < 14; i++) {

    promises.push(
      db.collection('xxx').where({
        placeId,
        date: util.formatDateTime(date, 'yyyy-MM-dd')
      }).get()
    )
    date.setDate(date.getDate() + 1)
  }

  return await Promise.all(promises)

}

console.time('get status')
let statusRes = await getStatus(placeId)
console.timeEnd('get status')

* 在开发者工具上,平均用时在300ms左右,可见确实是并发执行的

* 但在真机上,测出来还是需要3秒左右,我猜想它还是在顺序的执行

* 真机环境:

  • 预期表现

在任何环境下,都应该是并发执行,所需时间应该在300ms左右

  • 复现路径和提供一个最简复现 Demo(应该不需要了吧

在此先行谢过各位大佬!

1 回复

补充一下:我没有开启es6转5的选项,使用的是小程序自带的async/await

请问有官方人员能核实一下情况嘛?谢谢!

回到顶部