美文网首页
使用Promise封装小程序网络请求

使用Promise封装小程序网络请求

作者: 候鸟与暖风 | 来源:发表于2018-09-13 16:13 被阅读553次

/**

*1. 基于Promise的网络请求库,包含GET POST请求

* 2.使用方法:

*     1.先引入: import {get,post,...} from 本文件;

*      2.get请求:    get("/index",{id:2}).then(data=>{}).catch(error=>{});

*     3. post请求:    post("/index",{id:2}).then(data=>{}).catch(error=>{});

*/

/* 服务器请求地址 */

export const domain = 'https://api.it120.cc/tz/';

/**

* 发起get请求

* @param url 请求路径 必填

* @param data 请求参数 get请求的参数会自动拼到地址后面

* @param headers 请求头 选填

* @returns {Promise}

*/

export const get = (url, data, headers) => request('GET', url, data, headers);

/**

* 发起post请求

* @param url 请求路径 必填

* @param data 请求参数

* @param headers 请求头 选填

* @returns {Promise}

*/

export const post = (url, data, headers) => request('POST', url, data, headers);

/**

* 接口请求基类方法

* @param method 请求方法 必填

* @param url 请求路径 必填

* @param data 请求参数

* @param header 请求头 选填

* @returns {Promise}

*/

export function request(method, url, data, header = {

  'Content-Type': 'application/json'

}) {

  wx.showLoading({

    title: '加载中...'

  });

  return new Promise((resolve, reject) => {

    const response = {};

    url = domain + url;

    wx.request({

      url,

      method,

      data,

      header,

      success: (res) => response.success = res,

      fail: (error) => response.fail = error,

      complete() {

        wx.hideLoading();

        if (response.success) {

          if (response.success.statusCode != 200) {

            wx.showToast({

              title: "网络出错,稍后再试",

              icon: "none"

            });

            return;

          }

          resolve(response.success.data);

        } else {

          wx.showToast({

            title: "数据请求失败,请稍后重试",

            icon: "none"

          });

          console.log('数据请求失败', response.fail)

          reject(response.fail);

        }

      },

    });

  });

}

相关文章

网友评论

      本文标题:使用Promise封装小程序网络请求

      本文链接:https://www.haomeiwen.com/subject/mlawgftx.html