微信小程序同步请求问题总结

这几天在工作中遇到了一个这样的需求:在初始化一个对象的时候要给该对象传一个function(要求同步从后端请求并返回请求得到的值),这个难道了我一个干后端的,请假了几位前端大神无果准备自己干。如果有用请赞我、废话不说上代码:

1、场景:

var obj = new object(a)
a:function(){
    wx.request({
        url: url,
        data: {
        'name' =obj.XX,
        'id' = obj.XX
            },
        method: 'POST',
        header: {
        'content-type': 'application/json'
        },
        success: function(res) {
              that.data.phr = res.data
            },
    })
    return that.data.phr
}
在class object中: var abj = a();
XXXXXXXXXXXXX=abj;

问题描述:该方法a需要使用obj中暴露出来的数据,obj中需要使用a中返回的参数,由于语法要求不能像上述代码中一样在后台返回数据之后直接return该数据。

2、问题解决

//class object中对使用该参数a的方法做同步处理

export default{
	Object:function(a) {
    var _this = this;
    var b =null//type = String
    //参数a的类型校验略...
        b:async function(){
         _this.b = await a();
    }
}}

//
onLoad: function (options) {
    var obj = new object(a)
}
a:function(){
     var that = this
    await that.sendRequest(url, {
              'name': obj.name,
              'id': obj.id
            }).then(res => {
              console.log(res.data)
              that.setData({
              phr: res.data
              })
            })
    return that.data.phr
}
  // 利用Promise进行同步请求封装
  sendRequest: function(url, params) {
    var that = this;
    return new Promise(function(resolve, reject) {
      wx.request({
        url: url,
        data: params,
        method: "POST",
        header: {
          "Content-Type": "application/json;charset=UTF-8",
        },
        success: function(res) {
          resolve(res.data);
        },
        fail: function(res) {
          reject(res);
        },
      })
    });
  }

//打完收工

注:在你按照此方法完成同步请求的时候不要高兴太早,他可能会报错哦!!!报错请选中微信开发者工具本地设置中的增强编译选项

注:在你按照此方法完成同步请求的时候不要高兴太早,他可能会报错哦!!!报错请选中微信开发者工具本地设置中的增强编译选项

注:在你按照此方法完成同步请求的时候不要高兴太早,他可能会报错哦!!!报错请选中微信开发者工具本地设置中的增强编译选项

重要的事说三遍!!!!!!

微信小程序复杂同步请求封装结束!

你可能感兴趣的:(小程序,小程序同步请求,微信小程序,同步请求封装,奇葩同步请求,es6同步请求)