收藏
回答

JS等待执行的问题?

问一个比较低级的问题,一个云函数,用于获取服务器时间,在后面的代码继续中要用到服务器时间。

云函数是这样的:

const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {
  const date = new Date().getTime();
  return date
}


调用是这样的:

     
let serverTime
wx.cloud.callFunction({
        name'getTime',
        successres => {
          console.log(new Date(res.result))
          //赋值
          serverTime=res.result
        },
        failres => {
          console.error
        }
      })

//实际上我希望在这里使用serverTime。
console.log(serverTime)


实际上我不想把后续代码嵌套到云函数的success回调中,这样代码可读性差,不利于维护。

问题是我如何等待云函数返回,再执行console.log(serverTime)。

我尝试去研究了一下async/await,但未解决,当然setTimeout这种不科学的方法也是不可取的。

麻烦大哥帮忙改一下代码,谢谢。

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

2 个回答

  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    2020-07-24

    用async/await

    async xxx(){
      let serverTime
      await wx.cloud.callFunction({name'getTime'}).then(res=>{
    
        serverTime = res.result
    
      }).catch(e=>{ console.error(e) })
    
      console.error('serverTime:', serverTime)
    
    }
    


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

    2020-07-24
    有用 1
    回复
  • xplee
    xplee
    2020-07-24

    单独写个方法,在success中调用,可读性也差不到哪里去。

    2020-07-24
    有用 1
    回复
登录 后发表内容
问题标签