异步 同步
区别
异步:不能直接拿到结果
同步:能直接拿到结果
回调函数
- 异步任务需要在得到结果时通知JS来拿结果
- 写一个回调函数,并保存该函数地址
- 异步任务完成时,调用该函数地址
- 将得到的结果作为参数传给该函数
判断同步 异步
如果一个函数的返回值处于:
setTimeout
AJAX(即XMLHttprequest)
-
addEventListener()
的内部,就是异步函数
异步 回调 举例(掷骰子)
function 掷骰子(fn){
setTimeout(()=>{
fn(parseInt(Math.random()*6)+1, 1000)
})
} //一秒后拿到结果,将结果传给fn
掷骰子( (x)=>{console.log(x)} ) //可简化为 `掷骰子(console.log)` ,只有参数个数一致才可以简化
总结
- 异步任务不能拿到结果
- 于是我们传一个回调给异步任务
- 异步任务完成时调用回调
- 调用时把结果作为参数
网友评论