异步
维基百科解释
异步IO是计算机操作系统对输入输出的一种处理方式:发起IO请求的线程不等IO操作完成,就继续执行随后的代码,IO结果用其他方式通知发起IO请求的程序。与异步IO相对的是更为常见的“同步(阻塞)IO”:发起IO请求的线程不从正在调用的IO操作函数返回(即被阻塞),直至IO操作完成。
个人总结
理解为:【不等结果就执行下一步】
举例:
A:让黄牛去买票,然后站着等,没有买回来就不做别的事情。
B:让黄牛去买票(告诉黄牛,你买到票就告诉我),然后做别的事情。
代码举例:Demo预览
function 异步做事(){
setTimeout(()=>{
console.log("异步做事")
},1000)
}
function 同步做事(){
console.log("同步做事")
}
异步做事()
console.log("1")
// 打印出的顺序如下
//"1"
//"异步做事"
回调【Callback】
回调通常和异步结合使用
回调:是拿到异步结果的一种方式;
同时,回调也可以拿到同步的结果
例子
假如有 2 个函数 f1 和 f2
f1()
f2()
如果f1 是一个很耗时的函数,可以 考虑改写 f1,让 f2 写成 f1 的回调函数
function f1(callback){
setTimeout(function () {
// f1的任务代码
callback();
}, 1000);
}
这种情况下,执行代码为:
f1(f2)
使用这样的方式,我们就将同步的方式转换成了异步的方式,f1不会堵塞程序运行,相当于先执行程序的主要逻辑,将耗时的操作推迟执行。
小结 :
回调函数
- 优点
- 简单、容易理解和部署
- 缺点
- 是不利于代码的阅读和维护,各个部分之间高度耦合(Coupling)
- 流程会很混乱,而且每个任务只能指定一个回调函数。
参考资料: