微信小程序中的函数(仿写网络请求代码)

开始正文之前,先看一个例子:
代码是在微信小程序的环境下编写的

 /** 异步测试 */
  asyncRequest: function() {
    return new Promise((resolve, reject) => wx.request({
      url: 'test.php',
      success: resolve,
      fail: reject
    }))
  }
asyncRequest().then(res => {
      console.log('成功', res)
    }).catch(err => {
      console.log('失败', err)
    })

以下是结果:
在这里插入图片描述
可以看到在asyncRequest()中的fail中,并没有进行赋值操作,但是在调用这个方法后,却打印出了结果。下面开始正文:

/** 函数的基本定义,需要调用才能执行 */
    function f1(value) {
      return '函数基本定义';
    }

    /** 没有名字的函数表达式,需要调用才能执行 */
    var f2 = function(s) {
      console.log('函数表达式', s);
    };

    /** 有名字的函数表达式,需要调用才能执行 */
    var f3 = function f(s) {
      //f只在这个范围内有效,函数外无效,这种方式可以适用于递归方式
      console.log('有名字的函数表达式_1', s);
      console.log('有名字的函数表达式_2', f);
    }
    f3('aaaaaaaaa')
    /** ES6函数表达式,需要调用才能执行 */
    var f4 = v => v + v;

    // 等同于
    var f5 = function(v) {
      return v + v;
    };

    /** 回调函数 */
    function f6(callBack) {
      callBack(5)
    }

    f6(function(value) {
      console.log('匿名函数的使用', value)
    })
    /** ES6函数表达式,函数返回对象的方式 */
    var f8 = (key, value) => ({
      key: key,
      value: value
    })
    console.log('函数中对象的返回方式', f8(1, 2))
    /** 对象中的函数使用 */
    var o = {
      f9: function(value) {
        console.log('对象函数的使用1', value)
      },
      f10(value) {
        console.log('对象函数的使用2', value)
      },
      f11: value => {
        console.log('对象函数的使用3', value)
        return '结果f8'
      },
      f12: value => '结果f9',
      f13: f2,
      f2
    }
    o.f9(1)
    o.f10(2)
    var result_11 = o.f11(3)
    console.log('result', result_11)
    var result_12 = o.f12(3)
    console.log('result', result_12)
    o.f13('对象中的函数表达是1')
    o.f2('对象中的函数表达是2')
	
	注意函数使用的时候调用()与不调用()有所区别:
	()是执行的意思,没有括号只有函数名则是只使用了引用地址,这个引用地址在其它地方加上()就又执行了该引用地址的函数,比如:
	 var f14 = function () {
      return '执行函数f14';
    }
    console.log(f14)
    console.log(f14())

下面是执行结果:
在这里插入图片描述
根据以上的例子进行最初的代码仿写:

function rs(o){
        o.success('success')
        o.error('error')
    }

    function test(callback){
      function f1(value){
        console.log('f1',value)
      }

      function f2(value){
        console.log('f2', value)
      }
      callback(f1,f2)
    }


    // test((f1,f2) => {
    //   f1(1)
    //   f2(2)
    // })

    test((f1, f2) => rs({
      success:f1,
      error:f2
    }))

下面的执行后的结果:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值