收藏
回答

如何用async、await将wx.login封装成同步执行的?

如题,进行的项目需要登录进入第一个页面之前就需要使用该用户的信息来展示各种数据,但是wx.login是异步的,下面的获取openid和session_id我已经改成了await请求了,但是,这个wx.login就不知道怎么去改了,在这里先附上我获取openid的函数和调用方法,希望大神帮忙解答,谢谢


//这是封装的方法
login:async function(code){
		let res = await request({url:'https://www.ceshi.com/ceshi/ceshi/login',data:{code},method:'post'})
		return res
}

下面是在onlaunch中使用

let info = await this.login(code)
console.log(info)
console.log('aaa')
//这样请求的话,就会先输出info的内容,再出书aaa字符串了,但是wx.login()要怎么封装才行啊,抓狂!!!!
回答关注问题邀请回答
收藏

3 个回答

  • 刘勇
    刘勇
    2020-04-16
    import regeneratorRuntime from './service/runtime.js'
    import request from './service/network.js'
    const promisify = require('./service/promisify.js');
    

    请问一下,上面的功能和这个链接的功能有区别吗,哪个更好

    https://developers.weixin.qq.com/miniprogram/dev/extended/utils/api-promise.html

    2020-04-16
    有用
    回复
  • 执念
    执念
    2020-02-18

    https://developers.weixin.qq.com/community/develop/doc/00082e3f538f704848a717f9d5c804

    谢谢这位大神,从他的帖子中找到了答案,promisify.js文件可以在他的代码片段中获得,我附上我的app.js

    import regeneratorRuntime from './service/runtime.js'
    import request from './service/network.js'
    const promisify = require('./service/promisify.js');
    const login = promisify(wx.login)
    App({
      onLaunch:async function () {
    		const code = await login()
    		let info = await this.login(code.code)
    		console.log(info)
      },
      globalData: {
        userInfo: null
      },
    	login:async function(code){
    		let res = await request({url:'https://www.ceshi.com/ceshi/ceshi/login',data:{code},method:'post'})
    		return res
    	},
    })
    
    2020-02-18
    有用
    回复
  • 金煜峰
    金煜峰
    2020-02-18
    function wxLogin(){
      return new Promise(function(reslove,reject){
        wx.login({
          success (res) {
            reslove(res.code);
          }
        })
      })
    }
    var code = await wxLogin();
    var info = await this.login(code);
    
    2020-02-18
    有用
    回复 4
    • 执念
      执念
      2020-02-18
      刚才试了一下你的方法,并不行。。。,我把wxLogin函数定义在login函数后面,然而并不能获取到
      2020-02-18
      回复
    • 金煜峰
      金煜峰
      2020-02-18回复执念
      这样
      2020-02-18
      1
      回复
    • 执念
      执念
      2020-02-18回复金煜峰
      哦哦,学习了。谢谢
      2020-02-18
      回复
    • 小桥流水
      小桥流水
      2020-05-20
      一个回调就搞定了哦  我也再找怎么处理 突然想到Promise也是靠回调实现的为啥我不能,ok一个回调爽歪歪.
      2020-05-20
      回复
登录 后发表内容
问题标签