收藏
回答

wx.login用promise封装后依然是异步的?


问题是封装完依旧是先打印wx.getSetting里的判断是否授权的log,也就是说我的login依然是异步的,登录还没执行完就去执行下一步授权了。

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

3 个回答

  • A🙃政
    A🙃政
    2019-10-31

    你的onlogin函数是普通函数啊,只不过这个普通函数内部你弄了个promise

    2019-10-31
    有用 1
    回复 17
    • 王威扬
      王威扬
      2019-10-31
      不应该这么写吗?我是在网上查的这么封装wx.login
      2019-10-31
      回复
    • A🙃政
      A🙃政
      2019-10-31回复王威扬
      onlogin: async function(){
      return await promise
      }划重点,你在这俩位置分别加上 async  和 await
      2019-10-31
      1
      回复
    • A🙃政
      A🙃政
      2019-10-31
      而且你理解错promise意思了
      2019-10-31
      回复
    • 王威扬
      王威扬
      2019-10-31
      懂了,原来在小程序里也要加async和await,我还以为只有在后台才加
      2019-10-31
      回复
    • 罗梅光
      罗梅光
      2019-10-31回复A🙃政
      厉害,这个是高手。目前在app.js里面wx.login然后index.js-setTimeout,感觉大佬的写法更顺畅。
      2019-10-31
      回复
    查看更多(12)
  • HETRUN旭川-郑辉
    HETRUN旭川-郑辉
    2020-07-09

    我也遇到了这个问题,promise后面,还是异步。

    2020-07-09
    有用
    回复
  • 三世羽翾
    三世羽翾
    2019-10-31

    异步解决方案就是回调、promise、async函数和不常用的Generator 函数,只是你用的promise和你要实现的有问题


    test().then(res=>{

        console.log(444)
    }).catch(err=>{
        console.log(555)
    });
    function test(){
        let obj = new Promise((resolve,reject)=>{
            console.log(111)
            setTimeout(()=>{
                console.log(222)
                resolve();
            },2000);
            if(1==2){
                console.log(333)
                reject();
            }
        });

        return obj;

    }

    输出111、222、444


    2019-10-31
    有用
    回复 1
    • 隶书
      隶书
      2020-01-09
      您这段代码不是和楼主一样吗?
      2020-01-09
      回复
登录 后发表内容
问题标签