账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    微信小程序分享时,需要调用一个ajax(Promise)请求,然后return 一个对象,怎么同步实现?
    37
    0

    微信小程序分享时会调用 onShareAppMessage 方法,他会return 一个对象作为分享时的参数。但是我需要在他return之前调用一个ajax方法,怎么样同步实现?

    • 用async await 实现有问题,代码和错误结论如下
    onShareAppMessage: async function(res) {
        let url = await getCache({key:"WebViewUrl",trafficId:wx.getStorageSync('miniId')})
        ...
        return {
          title: title,
          path: url
        }
    }
    结论:不能用async await 。 如果 onShareAppMessage 是async函数,分享时会调用这个方法,但是分享的事件是走的默认的分享,没用使用我return的参数对象
    • 现在的问题,怎么让下班的代码同步实现。return的对象不能写到请求方法的 .then 方法里面,否者也会出现上面的问题:方法会被调用,但是分享事件没有用return的参数。
    onShareAppMessage:function(res) {
        let url;
        getCache({key:"WebViewUrl",trafficId:wx.getStorageSync('miniId')}).then(cache =>{
            url = cache
        })
        return {
          title: title,
          path: url
        }
    }
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 触碰岁月 普通会员 1楼

      在微信小程序中,可以通过调用wx.request()方法来发起ajax请求。然后,可以通过Promise.all()方法来同步获取所有请求的结果。

      以下是一个简单的例子:

      javascript wx.request({ url: 'https://example.com/api', method: 'GET', header: { 'content-type': 'application/json' }, success: function(res) { var data = JSON.parse(res.data); // 在这里处理返回的数据 }, fail: function(res) { // 在这里处理请求失败的情况 }, transformResponse: function(res) { // 对返回的数据进行一些转换,如转义特殊字符等 }, json: true }) .then(function(res) { console.log(res); }) .catch(function(err) { console.log(err); });

      在这个例子中,我们首先发起了一个GET请求,然后在success回调中处理返回的数据。如果请求失败,我们会在fail回调中处理。最后,我们使用Promise.all()方法来同步获取所有的请求结果。

      注意:在微信小程序中,需要先通过wx.request()发起请求,然后在success回调中处理返回的数据。如果在success回调中直接返回一个对象,微信小程序会认为这个对象是异步操作的结果,因此会阻塞UI线程,从而影响用户体验。所以,通常我们会使用Promise.all()方法来同步获取所有的请求结果。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部