JavaScript踩坑笔记10---同步回调、异步回调

JavaScript踩坑笔记10---同步回调、异步回调

同步回调:

同步回调指的是,回调函数和主函数的执行是同步的,回调函数在主函数内执行,并且主函数要等回调函数执行完毕以后,才能执行。
举例说明。

// 定义一个人,这个人叫小明
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函数是异步的,所以主函数执行到它时,不会阻塞,而是继续向后执行,程序会将这个耗时的操作推迟执行,等它执行完后,再将回调函数返回结果给主函数。


个人学习总结,欢迎批评指正

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值