微信小程序关于 wx.request的异步封包以及调用

个人喜欢AJAX传参,获得数据,正常写wx.request,在独立页面是可以正常使用的

 var that = this
    //调用数据结束
    wx.request({
  
      url: app.d.hostUrl + '/ajax/xcxAjax.ashx?MID=4&chaname=goods&channel=' + channelid+'&topnum=5&titlenum=10',
      method: 'GET',
      headers: {
        'Content-Type': 'application/json'
      },
      success: function (res) {
        let getdata = res.data.rows;
        console.log('getdata', getdata);
        that.setData({
        prolist2: getdata,//第一个data为固定用法,第二个data是json中的data

        })
      }
    })

 

放入一个独立的JS里面 前端调用就会发现,显示数据始终为undefined,这个是由于微信小程序wx.request,是一个异步调用,因此用到了promise方法,

//小程序采取的是异步,不能直接获取参数值,需要用到Promise,案例如下,

function ceshi(ctname) {
let promise = new Promise(function (resolve, reject) {
    wx.request({
      url: app.d.hostUrl + '/ajax/xcxAjax.ashx?MID=1',
      // data: params,
      method: 'GET',
      headers: {
      'Content-Type': 'application/json'
       },
      success: function (res) {
        console.log('返回结果:');
        console.log(res.data);
        //app.netWorkData.result = res.data;
        resolve(res.data);
        reject("调用失败"); 
      }, 
      fail: function (res) {
        console.log('返回结果:');
        console.log(res.data);
        //app.netWorkData.result = res.data;
        resolve(res);
        reject("调用失败");
      }
    })
  });
  return promise

}

//这还没完,前端调用和正常的写法有所改变,简化版的可以用Lambda表达式

前端的调用代码

const app = getApp()

var common = require("../../utils/common.js");

var util = require("../../utils/util.js");、

//以上三行属于引用

//简化版的

util.hyrequstGet('?MID=1').then((value) => { console.log('jiguo222', value);})

//非简化版的

util.hyrequstGet('?MID=1').then(
function(value)
{
console.log('jiguo333', value);
});

//前端调用then的使用,属于promise方法,

完整的一个get提交获取数据的方法

//二次简化封包

function hyrequstGet(url) {
  return hyrequst(url, 'GET')
}

function hyrequstPost(url) {
  return hyrequst(url, 'POST')
}

function hyrequst(url, method = {}) {
  wx.showNavigationBarLoading()
  method = method
  return new Promise((resove, reject) => {
    wx.request({
      url: app.d.hostajax + url,
      header: { 'Content-Type': 'application/json'},
      method: method.toUpperCase(), // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
      success: function (res) {
        wx.hideNavigationBarLoading()
        resove(res.data)
      },
      fail: function (msg) {
        console.log('reqest error', msg)
        wx.hideNavigationBarLoading()
        reject('fail')
      }
    })
  })
}



module.exports = {
  formatTime: formatTime,
  requstGet: requstGet,
  requstPost: requstPost,
  hyrequstGet: hyrequstGet,
  hyrequstPost: hyrequstPost
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值