如上图,我加上了cache:false 和async:false ,但是最后获取到的level的值还是为空,请问是什么情况?
如上图,我加上了cache:false 和async:false ,但是最后获取到的level的值还是为空,请问是什么情况?
在执行 getLevel 的时候,发送了一个 Ajax 请求,然后执行return level
,这个时候不论 ajax 是否已经成功,sucess 的回调函数都不会执行。因为,JS 是单线程的。所以 return level
返回空字符串(这个时候 level 还是初始值)。
当Ajax 成功了,就会给,level
赋值,但是这个时候你已经访问不到level
。
你所不懂的问题是:基本类型和引用类型的区别;JS 异步是什么意思。
8 回答4.8k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
6 回答2.4k 阅读
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
这个是jQuery的ajaxAPI本身这样设计的,当
async
为false的时候,意味着ajax请求为同步的,那么这个API就默认你是直接通过$.ajax()
这个方法调用所返回的结果去取值,而不是通过success
回调函数进行取值,所以也就不会调用success
这个回调函数。对于
ajax
同步和异步请求的区别,可以参考我之前回答过的问题:https://segmentfault.com/q/10...