什么是闭包?闭包指的是:能够访问另一个函数作用域的变量的函数。清晰的讲:闭包就是一个函数,这个函数能够访问其他函数的作用域中的变量
我的回调函数实际应用场景是,我需要获取到监测站数据在地图上展示;
在map.on("load",func)触发函数中执行获取点位数据的函数getAllFacility,在此传入获取数据后的回调函数作为参数:
上述代码,回调函数addFacilityToMap就拥有了调用该回调函数所属的运行环境,构成闭包
现在开始深入探讨一番回调函数,回答 “用回调函数目的是啥?”这一问题。
简单回答问题:异步请求后,当服务器的响应到达时即触发回调函数,这样客户端不会被阻塞。
详细:
1 修改代码为如下返回数据的形式,那么存在的问题是,调用getAllFacility函数获取到的facilityData就是一个空对象{}
2 第一步的代码,获取的是空对象,就是因为异步请求还没有完成;前台会继续执行ajax块后面的脚本,直接先返回了初始化的facilityData={}这一空值。如果一定要这么写,那么设置ajax请求为同步请求。
async: true,(默认是true),ajax请求是异步的;
async: false,ajax请求是同步的;此时ajax请求将整个浏览器锁死,可能使浏览器进入假死状态。如果网络传输或服务器很慢,响应会让人不可接受