同步回调:
同步回调指的是,回调函数和主函数的执行是同步的,回调函数在主函数内执行,并且主函数要等回调函数执行完毕以后,才能执行。
举例说明。
// 定义一个人,这个人叫小明
var person = {
name: "小明",
// 定义一个方法,办理身份证
createIDcard: function (people, callbackFunction) {
console.log(this.name + "坐车来到了派出所,并且叫上了他的老爹");
console.log("派出所说要30天才能取到身份证,于是" + this.name + "去办理其他业务,留下了他的老爹");
callbackFunction(people);
console.log(this.name + "其他业务办理完毕");
console.log(this.name + "接" + people + "回家");
}
};
// 再定义一个人,小明他爹
var father = {
name: "小明他爹",
// 定义一个方法,取身份证
getIDcard: function (who) {
// 用setTimeout模拟延时操作
setTimeout(function () {}, 2000);
console.log(who + "苦等30天,终于取到了身份证");
}
};
person.createIDcard(father.name, father.getIDcard);
// 小明坐车来到了派出所,并且叫上了他的老爹
// 派出所说要30天才能取到身份证,于是小明去办理其他业务,留下了他的老爹
// 小明他爹苦等30天,终于取到了身份证
// 小明其他业务办理完毕
// 小明接小明他爹回家
以上例子说明,同步回调是回调函数和主函数完全按照顺序同步执行的,即使是在执行过程中遇到延时,主函数也得等回调函数执行完毕,才能执行。
异步回调:
异步回调指的是,回调函数和主函数的执行是不同步的,回调函数在主函数内执行,主函数不用等回调函数执行完毕以后再执行。
举例说明。
// 定义一个人,这个人叫小明
var person = {
name: "小明",
// 定义一个方法,办理身份证
createIDcard: function (people, callbackFunction) {
console.log(this.name + "坐车来到了派出所,并且叫上了他的老爹");
console.log("派出所说要30天才能取到身份证,于是" + this.name + "去办理其他业务,留下了他的老爹");
// 用setTimeout函数模拟异步
setTimeout(callbackFunction, 2000, people);
console.log(this.name + "其他业务办理完毕");
console.log(this.name + "接" + people + "回家");
}
};
// 再定义一个人,小明他爹
var father = {
name: "小明他爹",
// 定义一个方法,取身份证
getIDcard: function (who) {
console.log(who + "苦等30天,终于取到了身份证");
}
};
person.createIDcard(father.name, father.getIDcard);
// 小明坐车来到了派出所,并且叫上了他的老爹
// 派出所说要30天才能取到身份证,于是小明去办理其他业务,留下了他的老爹
// 小明其他业务办理完毕
// 小明接小明他爹回家
// 小明他爹苦等30天,终于取到了身份证
以上例子说明,异步回调是回调函数和主函数异步执行的。
setTimeout函数是异步的,所以主函数执行到它时,不会阻塞,而是继续向后执行,程序会将这个耗时的操作推迟执行,等它执行完后,再将回调函数返回结果给主函数。
个人学习总结,欢迎批评指正