同步/异步

103 阅读1分钟

同步/异步

使用同步模拟异步行为

案例:

需求: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函数执行完毕之后再执行,这个案例是使用同步来模拟异步的行为,

同步:函数或方法执行完毕后,才能继续往下执行,需要等待

异步:不必等函数或方法执行完毕之后,就可以往下执行,不需要等待

缺点:不利于代码的阅读,和维护,各部分之间高度耦合流程会很混乱,而且每一个任务只能指定一个回调函数