前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信小程序Ⅵ [wx.request 的回调使用]

微信小程序Ⅵ [wx.request 的回调使用]

作者头像
泥豆芽儿 MT
发布2018-09-11 11:42:53
7.7K0
发布2018-09-11 11:42:53
举报

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1333897

☆ 前言

  • 在微信小程序的开发过程中,wx.request 的请求必不可少
  • 我注意到(也可能刚接触,知识积累面太少),在外部 js 文件使用 wx.request 请求服务器数据时,因为异步的请求机制,我们不能在其success:function()中直接返回需要的数据

此时,回调函数的设计就有了存在价值

★ 简单例子用法演示

①. 首先设计外部方法

  • 注意参数的设置,及回调时的写法
代码语言:javascript
复制
  //此方法处于外部文件 “utils/util.js” 中进行了定义
  function requestBanner(callback){
  wx.request({
    url: 'http://wxzergpro.com/api/v1/banner/1',
    method: 'GET',
    success: function (data) {
      callback && callback(data);
    },
  })
}

②. 当前页面对应 js方法的

  • 前提需要引入公共文件 var util = require('../../utils/util.js');
代码语言:javascript
复制
//定义的触发函数
cbRequest:function(){
    //注意回调函数的调用
    util.requestBanner(this.callbackFun);
  },
  //回调函数 
callbackFun:function(res){
    console.log('callbackFun:');
    console.log(res);
  },
  • ES6 支持一种简写方式:
代码语言:javascript
复制
cbRequest:function(){
    util.requestBanner((res)=>{
      console.log('callbackFun:');
      console.log(res);
    });
  },

③. 测试结果

★ 操作示例(详细)

①. 是外部公共函数的设置

首先,是外部公共函数的设置,个人习惯提取使用率高的公共函数到外部文件,此处为 common.js

  • 其中举例放置了一个函数,代码如下:
代码语言:javascript
复制
/**
 * 根据商品ID获取商品详情
 */
function getGoodsInfo(doMain, goods_id, callback) {
  wx.request({
    url: doMain + '/WxApi/Goods/getGoodsInfo',
    header: { 'Content-Type': 'application/json' },
    data: {
      goods_id: goods_id,
    },
    success: function (res) {
      if (res.data.status) {
        console.log(' 获取商品 详细信息');
        //console.log(res.data.data)
        return typeof callback == "function" && callback(res.data.data)
      } else {
        return typeof callback == "function" && callback(false)
      }
    },
    fail: function () {
      return typeof callback == "function" && callback(false)
    }
  }, )
}

/**
 * 进行方法的暴露
 */
module.exports = {
  getGoodsInfo: getGoodsInfo,
}

②. 全局函数的设置

  • 针对使用率高的一些通用处理,可以考虑将其设置为全局函数,依此需求设计,则首先应在 app.js 中:

  1. 引入,公共文件 var common_js = require('utils/common.js')
  2. 在其 App() 方法的最后,将所需的函数注册成为全局函数undefinedfunc: {getGoodsInfo: common_js.getGoodsInfo}
  3. 参考截图如下:

③. 进行函数的调用

  • 在需要调用全局函数的业务逻辑中,核心参考代码如下:
代码语言:javascript
复制
//获取应用实例
const app = getApp()
Page({
/** 页面的初始数据*/
data: {
    goodsInfo: {}
  },
/**
 * 生命周期函数--监听页面加载
 */
  onLoad: function (options) {
    var that = this;
    var doMain = app.globalData.doMain
    app.func.getGoodsInfo(doMain, options.id, function (goodsInfo) {
      console.log(goodsInfo);
      that.setData({
        goodsInfo: goodsInfo,
      });
      //TODO 详情页的标题栏设置(动态) 
      wx.setNavigationBarTitle({
        title: goodsInfo.title
      })
    })
  },
..........
})
  • 执行结果,可参考打印出的信息

¤ 附录

  • 关于回调函数,有一个所谓的好莱坞准则:Don’t call me; I’ll call you!

♩♪♫ 推荐参考

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年03月16日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ☆ 前言
  • ★ 简单例子用法演示
    • ①. 首先设计外部方法
      • ②. 当前页面对应 js方法的
        • ③. 测试结果
        • ★ 操作示例(详细)
          • ①. 是外部公共函数的设置
            • ②. 全局函数的设置
              • ③. 进行函数的调用
              • ¤ 附录
                • ♩♪♫ 推荐参考
                相关产品与服务
                云开发 CloudBase
                云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档