方法 retrun 异步的值,创建一个变量直接等于一个异步方法返回的值

需求:我想创建一个变量,他的值是一个openid, openid 从 getOpenid (封装的一个异步方法) 里面返回,通常调用 getOpenid ,会返回一个Promise 对象,.then 之后才能得到值,例如:

//模拟一个异步方法
function myPromise () {
	return  new Promise(function(resolve, reject) {
		setTimeout(function() {
			resolve("myPromise的resolve执行完毕!"); //代码正常执行!
		}, 5000);
	});
}

//获取异步方法的值
myPromise().then(res=>{
    var a = res
})

使用 Promise 的话,需要在 .then 里面的函数才能取到值,很明显这有点累赘。那我们来优化一下吧。

 

优化方案很简单,就是利用 async await 语法糖。


  async getOpenid() {
    if (wx.getStorageSync('openid')) {
      return wx.getStorageSync('openid');
    } else {
      return (await wx.cloud.callFunction({
        name: "openId"
      })).result.openid;
    }
  },

  async onLaunch() {
    this.openid = await this.getOpenid()
    console.log('this.openid', this.openid)
  }

getOpenid 是云函数请求,它是一个异步方法,返回openid字符串。把方法加上 async ,利用await 取值,是不是很方便?  

之后取值,直接 this.openid 就可以拿到 openid 了,不再需要 this.openid().then(res=>res) , 舒服了!!

你可能感兴趣的:(Web前端,微信小程序,JS,async,await,获取异步的值给变量赋值,异步的值给变量赋值,异步)