收藏
回答

云开发数据库在真机上无法并发获取数据

问题模块 框架类型 问题类型 终端类型 AppID 基础库版本
云开发 小程序 Bug 工具 wxa834e8255ed74285 2.4.4

- 当前 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(应该不需要了吧


在此先行谢过各位大佬!


最后一次编辑于  03-29  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

1 个回答

  • 饿的快
    饿的快
    04-01

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

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

    04-01
    赞同
    回复 2
    • NO
      NO
      04-10

      大哥,还好吗,请问这个问题现在解决了吗···我现在也遇到这个问题了,我才4个函数啊,也要3s了啊·····!!!哭啊

      04-10
      回复
    • 饿的快
      饿的快
      04-11回复NO

      只能想办法减少访问数据库的次数,能一次查出来的内容就不要分次查询了

      04-11
      回复