同步/异步
使用同步模拟异步行为
案例:
需求:B同学和C同学在A同学家玩,B同学和C同学要回家了,A同学嘱托B同学和C同学到家发消息,C同学到站却忘记下车,只能坐车在回家,此时B同学说,到家记得发消息,C同学说好的
// 定义主函数,回调函数作为参数
function A(callback) {
console.log('我是A同学,也是主函数');
callback();
}
//定义回调函数
function B(callback){
console.log('我是B同学,我到家了');
callback();
//setTimeout("console.log('我是回调函数')", 3000);//模仿耗时操作
}
function C(){
console.log('我是C同学,我到家了');
//setTimeout("console.log('我是回调函数')", 3000);//模仿耗时操作
}
A(B(C));//B同学告诉A同学到家了,C同学告诉B同学到家了
A(C);//C同学告诉A同学到家了
通过案例可以看出 A函数执行,B函数和C函数作为回调函数传给A函数,这样B函数或C函数就不用等待A函数执行完毕之后再执行,这个案例是使用同步来模拟异步的行为,
同步:函数或方法执行完毕后,才能继续往下执行,
需要等待异步:不必等函数或方法执行完毕之后,就可以往下执行,
不需要等待缺点:不利于代码的阅读,和维护,各部分之间高度耦合,流程会很混乱,而且每一个任务只能指定
一个回调函数。