JS--callback使用理解

最近在学微信小程序开发的时候,学到页面下拉刷新时,需要在刷新完成并且后台数据返回成功的情况下,执行如下函数:

complete: ()=>{
    wx.stopPullDownRefresh();
}

这个函数的执行先决条件为:wx.request()的success()执行完之后执行。
所以一开始如果就像上面这样,直接把complete()函数放在wx.request()中,就会导致在页面加载执行onLoad()函数时也执行了wx.stopPullDownRefresh(),而我们的需求是:在用户有下拉刷新的动作完成,后台获取数据成功并返回的情况下再去执行wx.stopPullDownRefresh()。为了满足这一需求,教学视频采取的方法是:

getNow(callback) {
    complete: () => {
        callback && callback()
    }
},
onPullDownRefresh() {
    this.getNow(()=>{
        wx.stopPullDownRefresh()
    })
}

其中getNow()中包含wx.request(),一开始看到这个涉及到JS回调函数机制的模块并不是很理解,于是上网搜索后,对于其理解如下:
在onPullDownRefresh()定义的this.getNow()里的参数”()=>{wx.stopPullDownRefresh() }”就是一个匿名的回调函数,而“getNow(callback)”中的callback则是”()=>{wx.stopPullDownRefresh() }”的形参或者说是它的指针(地址)。

callback && callback()的理解:
callback && callback()相当于:

if(callback) {
    callback();  //若callback为空,则不执行callback();
}

较为严谨的格式是:(callback && typeof(callback)===”function”) && callback();
保证回调函数存在并且必须是函数引用或者函数表达式。
说明:
函数只有在函数名后加上()才代表它要解释执行,所以这里的callback指代的是回调函数的定义,而callback()才是对回调函数的调用执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值