1.同步异步
所有任务分为两种:一种是同步任务,另一种是异步任务。
2.1 同步任务
是指在主线程上排队整形的任务,只有前一个任务执行完毕,才能执行下一个任务。这就产生了一个问题,如果前一个任务耗时比较长,后续的任务则需要等待前一个任务执行完毕,从而阻塞代码的执行。
2.2 异步任务
在程序运行的时候,如果前一个任务耗时比较长,并不会等待任务返回结果,而是继续执行后续的任务。当前一个任务结果返回以后,再去执行相关任务。异步任务很好的解决了代码运行中的阻塞问题。
2.3 异步任务包括
- 定时器:setTimeout setInterval
- ajax的异步请求
- es6的promise
2.4 回调函数
异步函数取值问题:回调函数方式解决。
回调函数定义
函数A作为参数(函数引用)传递到另一个函数B中,并且这个函数B执行函数A。我们就说函数A叫做回调函数。如果没有名称(函数表达式),就叫做匿名回调函数。
//定义主函数,回调函数作为参数
function A(callback) {
callback();
console.log('我是主函数');
}
//定义回调函数
function B(){
setTimeout("console.log('我是回调函数')", 3000);//模仿耗时操作
}
//调用主函数,将函数B传进去
A(B);
//输出结果
我是主函数
我是回调函数