收藏
回答

在onShareAppMessage中使用async和await

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug onShareAppMessage 工具 6.6.7 1.9.91

需求描述:

在点击分享按钮后,请求接口(业务要求,一定要点击分享后才调接口),接口成功后执行自定义的分享内容


解决方案:

使用async和await,保证接口请求成功后才执行自定义内容。


问题:

代码按顺序执行,但是自定义的分享内容却未生效。


请教原因

最后一次编辑于  2018-08-10
回答关注问题邀请回答
收藏

3 个回答

  • 2018-08-13

    你需要对async和await有个基本了解

    不准确的来说……可以无脑认为async方法返回的是一个Promise

    对于外层来说需要对promise进行then或者await以获取Promise的返回值

    对于你的情况来说,onShareAppMessage方法默认是个同步方法,微信框架内对其调用方式可以简化认为是

    const sharingURL = page.onShareAppMessage()

    如果你把onShareAppMessage定义成一个async方法,则对于微信框架拿到一个Promise,不报错就很对得住你了

    2018-08-13
    有用 2
    回复 1
  • 🚗🚕🚙🚌🚎🚒🚐🚚
    🚗🚕🚙🚌🚎🚒🚐🚚
    2018-08-14

    遇到过这个问题,onShareAppMessage是个同步过程,不管你用Promise或await,

    onShareAppMessage返回的还是undefined


    2018-08-14
    有用
    回复 1
    • 吃多不长肉
      吃多不长肉
      2018-08-14

      了解了,最后还是要提前获取数据。

      2018-08-14
      回复
  • 洋葱
    洋葱
    2018-08-10

    分享已经改了,监测不到分享成功和失败了,接口请求需要时间,不在一个线程中,肯定会有问题

    2018-08-10
    有用
    回复 2
    • 吃多不长肉
      吃多不长肉
      2018-08-10

      我的return在await function后面,按我对async/await的理解,是执行完await function后,才会执行return。

      为什么不是同一个线程?,不是很懂你的意思

      2018-08-10
      回复
    • 洋葱
      洋葱
      2018-08-10

      把return写在请求成功里面试试,本身分享就是微信封装好了的,里面的实现逻辑我们是不知道的

      2018-08-10
      回复
登录 后发表内容