异步与Promise
异步
- 能直接拿到结果的叫同步
- 不能直接拿到结果的,需要等待结果出来的,就是异步
回调
写了一个函数却不主动调用,而是让其他函数去调用,这就是回调,即:回头调用一下
例子:
function f1(){}
function f2(fn){
fn()
}
f2(f1)
分析:
f1写了,但是作为写代码你的并没有主动去调用它,真正调用它的是f2。这说明f1没有马上调用,而是让f2那去调用。
f2就是回调。
异步与回调的关系
关联
由于异步不能马上拿到结果,我们通常会写一个函数,当异步结果出来了以后,再让浏览器去调用这个函数。我们写的这个函数是给浏览器调用的,很明显是一个回调函数。
他们之间是一个合作关系。
区别
异步任务需要用到回调函数来通知结果
但回调函数不一定只用在异步任务里面
回调函数也可以用在同步任务里面
回调函数就像是漂亮的女孩子,异步同步都喜欢她。
判断同步异步
返回值处于以下三种情况的内部时,此函数就是异步函数:
- seTtimeout
- AJAX(即XMLHttpRequest)
- AddEventRequest
注意:
由于异步任务一般不能直接拿到结果,因此我们设一个不调用的函数,将其传给异步任务调用,异步任务完成时调用这个回调函数时,会将其结果作为参数进行调用