美文网首页
使用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