收藏
回答

async await 异步转同步为什么没有实现?

async await 异步转同步为什么没有实现?

代码截图,预期是数据库操作执行完后 打印日志,但实际总是先打印日志,求指点,(其中数据库中的操作比较复杂,有3张表的联表查询,但这个应该和异步转同步没啥关系吧)


数据库的操作

回答关注问题邀请回答
收藏

5 个回答

  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    04-01
    getData: function(){
      return new Promise(async (rs, rj)=>{
        ...
        await db.collection('xxxx').where(...).get().then(res=>{
          ...
          rs({ 最后需要返回的数据 })
        }).catch(e=>{
          rj({ 异常时返回的内容 })
        })
      })
    }
    

    若认为该回答有用,给回答者点个[ 有用 ],让答案帮助更多的人

    04-01
    有用 1
    回复 2
    • ma
      ma
      04-24
      04-24
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      04-24回复ma
      比如?
      04-24
      回复
  • 圣殿骑士
    圣殿骑士
    04-01

    加个套试下

    await后面加个 new Promise 单步调试下

    04-01
    有用
    回复
  • 老张
    老张
    04-01

    建议先写个最简单的脚本调试await,以确定是await的原因,还是你的脚本的原因。

    let res = await db.collection(...).doc(...).get()

    console.log(res)

    04-01
    有用
    回复 5
    • 小肥羊
      小肥羊
      04-01
      支持
      04-01
      回复
    • @GOD
      @GOD
      04-02
      简单的脚本调试可以,但是用我这堆代码就不行,代码发给你了,帮忙给瞅瞅,多谢了!
      04-02
      回复
    • @GOD
      @GOD
      04-02
      也试过其它同学加个套的方法,也没成,没搞明白啥原因
      04-02
      回复
    • @GOD
      @GOD
      04-02
      上面代码没贴全 重贴下
      04-02
      回复
    • 老张
      老张
      04-02回复@GOD
      代码太乱了,看不了。
      首先,云开发函数本身就是支持promise的,没必要再promisify了;
      其次,一般await是这样使用;let res = await ....,没有再then了,没有await的时候才then,你的这种用户,其中有没有问题,我也没验证过。建议改成我说的这样试试。
      04-02
      回复
  • 李聪
    李聪
    04-01

    await的方法套个 new Promise 试下

    await new Promise((res, rej) => {

    //异步代码

    return res()

    })

    04-01
    有用
    回复
  • 小肥羊
    小肥羊
    04-01

    关注,学下下,等大佬入场

    04-01
    有用
    回复
登录 后发表内容
问题标签