收藏
回答

云函数 await 什么情况 会 return undefined?困惑

async function getMessageName(tid) {

  message.where({

    templateid: tid

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

    console.log(res.data)

    if (res.data{


      let sendData = []


      for (let i in res.data{

        let oneData = {

          touser: res.data[i].subscriber,

          templateId: tid,

          miniprogram_state: 'developer',

          page: 'pages/index/index',

          // 此处字段应修改为所申请模板所要求的字段

          data: res.data[i].messageItem

        }

        sendData.push(oneData)

      }

      console.log('sendData:')

      console.log(...sendData)


      return sendData

      // return "here is the return"

    }

  }).catch(err => {

    console.log(err)

  })


}


async function aaa(tid) {


  return "here is the return"

}


async function sendSubscribeMessage(event) {

  console.log("here i am")

  let prepareData = await aaa(event.templateId)

  console.log(prepareData) // 这句 是 "here is the return"

  prepareData = await getMessageName(event.templateId)

  console.log(prepareData) // 这句 是 undefined

  console.log("here i am 2")


  let sendResult = []

  for (let i in prepareData{

    sendResult.push(await cloud.openapi.subscribeMessage.send(prepareData[i]))

    console.log("here i am 3")

  }

  return sendResult


}





下面是云函数本地调试的 Console提示

[info] 函数被触发,正在执行中...

index.js:17 {action: "sendSubscribeMessage", templateId: "txPkadLVHO4lWYSPd_y01YH9go0P2FE8AHIdt6nMno4", datat: {…}}

index.js:91 here i am

index.js:93 here is the return

index.js:95 undefined

index.js:96 here i am 2

node.js:1 [info] 函数执行成功(耗时 15ms) []

node.js:1 [info] 调用 本地 云函数 'openapi' 完成  (耗时 19ms)

index.js:42 (2) [{…}, {…}]

index.js:58 sendData:

index.js:59 {touser: "ojFQH5ttjBG8QPnE-xgbvIj763xg", templateId: "txPkadLVHO4lWYSPd_y01YH9go0P2FE8AHIdt6nMno4", miniprogram_state: "developer", page: "pages/index/index", data: {…}} {touser: "ojFQH5uc10PCwpS48EzU-jykyV94", templateId: "txPkadLVHO4lWYSPd_y01YH9go0P2FE8AHIdt6nMno4", miniprogram_state: "developer", page: "pages/index/index", data: {…}}


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

1 个回答

  • Mr.Zhao
    Mr.Zhao
    2020-11-17

    先了解下为什么要用async await

    2020-11-17
    有用
    回复 10
    • 老米和小米
      老米和小米
      2020-11-17
      我理解是为了云调用的时候按步骤执行
      2020-11-17
      回复
    • Mr.Zhao
      Mr.Zhao
      2020-11-17回复老米和小米
      await写哪去了?没看到
      2020-11-17
      回复
    • 老米和小米
      老米和小米
      2020-11-17回复Mr.Zhao
      这里
      2020-11-17
      回复
    • Mr.Zhao
      Mr.Zhao
      2020-11-17回复老米和小米
      写错了,你还是去学学async await吧
      2020-11-17
      回复
    • 老米和小米
      老米和小米
      2020-11-17回复Mr.Zhao
      哦,好的,麻烦请教下, 为什么 aaa 这个 程序 return 是有值的, 而 getMessageData 的return 里面即使 写 和 aaa一样的 return 也 return undefined 呢?
      2020-11-17
      回复
    查看更多(5)
登录 后发表内容
问题标签