success && success(res.data)的实质

本文解析刚入职时遇到的代码片段,介绍如何在公司封装的get请求中使用success方法,并与组件内的调用进行区分。通过实例揭示了封装的wx.request与组件success函数的配合方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚入公司不久,看到大佬封装了要给get请求,里面代码设计到了:
success && success(res.data)。这句话的意思,需要调用的代码中,如果存在success,那就执行组件的success方法,这里的success跟全局封装中,wx.request的success的方法并不是同一个。

刚入门,初步见解,有错误,还请大佬指教。
具体代码是这样写的:
在全局js中封装了get请求:

  /**
   * get请求
   */
  _get: function (url, data, success, fail, complete, check_login) {
    wx.showNavigationBarLoading();//导航栏顶部加载
    let App = this;
    // 构造请求参数
    data = data || {};
    data.cid = App.data.cid;
    data.eid = App.data.eid;
    data.mwid = App.data.mwid;
    data.type = App.data.types;
    data.openid = App.data.openid;
    data.version = App.data.version;
    console.log(data);
    // 构造get请求
    let request = function () {
      wx.request({
        url: App.api_root + url,
        header: {
          'content-type': 'application/json'
        },
        data: data,
        success: function (res) {
          console.log(res);
          if (res.statusCode !== 200 || typeof res.data !== 'object') {
            App.showError('网络请求出错');
            return false;
          }
          if (res.data.code === -1) {
            // 登录态失效, 重新登录
            wx.hideNavigationBarLoading();//关闭导航栏加载
            //App.doLogin();
          } else if (res.data.code === 0) {
            App.showError(res.data.msg);
            return false;
          } else {
            success && success(res.data);
          }
        },
        fail: function (res) {
          App.showError(res.errMsg, function () {
            fail && fail(res);
          });
        },
        complete: function (res) {
          wx.hideNavigationBarLoading();
          complete && complete(res);
        },
      });
    };
    // 判断是否需要验证登录
    check_login ? App.doLogin(request) : request();
  },

组件代码调用get请求:

 app._get('videos/get_lists', {
      page: _this.data.page,
      title: _this.data.title,
      is_type: _this.data.type,
    }, function (result) {
      var page = _this.data.page + 1;
      var videoList = _this.data.videoList;
      var data = result.data;
      for (var i in data) {
        videoList.push(data[i]);
      }
      _this.setData({
        videoList: videoList,
        page: page,
        stat: 0
      });
      // console.log(_this.data.videoList)
    });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值