JS等待执行的问题?
发布于 7 年前 作者 panwei 2413 次浏览 来自 官方Issues

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

云函数是这样的:

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 回复

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

用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)

}

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

回到顶部