微信小程序之回调函数
1.首先什么是回调函数?
在经历一系列研究之后,我总结了一下,就是A函数作为B函数的参数,B函数执行完之后将返回的结果作为A函数的参数,再执行A函数。听起来很难懂,那就举个栗子吧
function getdata(callback) {
//这里我们假设是从后端获取数据
setTimeout(function() {
//假设我们获取到数据info
var info = {
"id": 1,
"name": '张三'
}
//得到数据以后执行函数方法
callback(info)
//这个就是回调函数
}, 10000)
}
function check(data) {
if (data.id == 1) {
console.log('验证成功,可以通过')
}
}
getdata(check);
分析如下:
- 首先我们定义了一个getdata函数和一个check函数,在getdata函数中调用了setTimeout()方法,作用是模拟从后端拿到数据所需的时间(里面的info就是模拟拿到的数据)
- 当getdata(check)运行后,进入getdata方法体,然后调用setTimeout方法,【即会经历10秒的休眠,此处是为了模拟平常的api调用(我故意弄了10秒 这样的话调试起来很明显)然后执行里面的function匿名函数(即定义了一个对象info)】,最后会将这个info对象传递给check函数,最后check函数拿到info对象参数后执行其方法体
- 具体的过程可以在开发者工具里通过断点调试
2.搞清楚什么是回调函数以后,再来看看wx.request()方法里的success回调函数就很容易理解了
首先我们将success方法作为wx.request()方法的参数(具体定义详见官方文档),然后当我们调用第三方api时,会经历一个短暂的等待,然后会得到相应的数据,而这些数据会作为参数传递给success方法,最后再执行success中的方法体
总结:回调函数就是指在另一个函数执行完成之后被调用的函数。
参考文章:https://www.jb51.net/article/144414.htm