一、什么是同步和异步?
- 同步:直接能拿到结果
- 异步:不能直接拿到结果
在JS中,有的函数不能立刻拿到结果,需要等一会才能拿到结果,比如发送HTTP请求,等待响应需要一段时间。
如果 JS 不能直接拿到一个函数的结果,可以先去执行别的代码,等结果到了再取结果,这就是异步
异步的好处是可以把用来等待的时间拿去做别的事情
怎么判断一个函数的结果是同步的还是异步的呢?
如果一个函数的返回值在setTimeout, AJAX, AddEventListener 这三个东西内部,那么这个函数就是异步函数
二、什么是回调?
我们希望能够拿到异步函数的结果,有两种方法:轮询和回调
- 轮询就是我定时去询问拿到结果了没
- 回调就是我写一个函数fn,然后传给异步函数,当异步函数执行完毕时,就会调用fn, 于是我们就通过回调拿到了异步处理的结果
满足以下条件的函数就是回调函数:我写给别人用,自己不用的函数
举例:
- 我写了函数A,传给函数B, B会调用函数A, 那么A就是回调
-
- arr.forEach((item)=>console.log(item))
- (item)=>console.log(item) 这个箭头函数就是一个回调
- 有的时候回调还可以传给一个对象&#