回调函数定义
回调函数就是将函数function B以参数的形式传入另一个函数function A中,当function A的函数执行过程中符合某一条件的时候或者执行完毕后执行参数中传入的函数,这个传入的函数function B就是回调函数。
我们以调用的角度分析,一开始我们肯定是在一个方法中调用function A,那我将这个调用function A的方法称为function C,在执行function A的时候调用了function C中定义的函数,这个就是回调
简单的说就是C调用了A,A中又调用了C中定义的方法
例子
微信授权,将授权成功后的code通过回调函数返回给调用方。
requestUtil.js
class TestRequest {
authentication(params) {
let nickName = params.detail.userInfo.nickName
console.log(nickName)
//获取code
wx.login({
success(res) {
//回调
params.callback(res)
}
})
}
}
export {
TestRequest,
}
wxml
<button open-type="getUserInfo" bindgetuserinfo="onGetUserInfo">登录</button>
js
import {
TestRequest
} from "../../utils/requestUtil.js"
let request = new TestRequest()
Page({
data: {
list: null
},
onGetUserInfo: function (e) {
request.authentication({
detail: e.detail,
callback: (res) => {
//回调函数
console.log(res)
}
})
},
})
上面的例子中,authentication方法的多个参数是通过es6对象解构 ,实现对象的方式来传参。
也可以去掉{}直接写在()中,这样写的好处是比较清晰,调用方法的时候有参数提示
如下
requestUtil.js
class TestRequest {
//多个参数直接写在外面
authentication(detail, callback) {
let nickName = detail.userInfo.nickName
console.log(nickName)
//获取code
wx.login({
success(res) {
callback(res)
}
})
}
}
export {
TestRequest,
}
js
onGetUserInfo: function (e) {
request.authentication(e.detail,res=>{
console.log(res)
})
},