ajax -async 参数同步异步
开发项目写功能的时候,需要将ajax的返回值赋到全局变量中,然后在该页面其他地方引用,因为ajax异步的原因一直无法成功,只需将async:false,就OK了。
写这个帖子的原因是因为。。。每次需要同步的时候,我记不住‘asyns'这个单词的拼写,每次都得去其他的js里面粘一边过来,为了加深记忆,决定写个使后感。。。
- async (default:
true
)Type: BooleanBy default, all requests are sent asynchronously (i.e. this is set totrue
by default). If you need synchronous requests, set this option tofalse
. Cross-domain requests anddataType: "jsonp"
requests do not support synchronous operation. Note that synchronous requests may temporarily lock the browser, disabling any actions while the request is active. As of jQuery 1.8, the use ofasync: false
with jqXHR ($.Deferred
) is deprecated; you must use the success/error/complete callback options instead of the corresponding methods of the jqXHR object such asjqXHR.done()
or the deprecatedjqXHR.success()
.
以上为jquery官网给出的API。
By default, all requests are sent asynchronously
ajax默认所有请求都是设置为异步的
If you need synchronous requests, set this option to false
如果需要同步,则设为false
写道
Cross-domain requests and dataType: "jsonp"requests do not support synchronous operation.
同步不支持跨域请求和数据类型:’jsonp'请求
Note that synchronous requests may temporarily lock the browser, disabling any actions while the request is active.
请注意,同步请求可能会暂时锁定浏览器,停止任何行为,直到该请求完成
As of jQuery 1.8, the use ofasync: false with jqXHR ($.Deferred) is deprecated;
在jquery1.8中,如果将请求设置为同步的话,则不支持延迟方法($.Deferred详细内容戳这里,讲的挺好的)
开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型数组),它们都不是立即能得到结果的。
通常的做法是,为它们指定回调函数(callback)。即事先规定,一旦它们运行结束,应该调用哪些函数。
简单说,deferred对象就是jQuery的回调函数解决方案。在英语中,defer的意思是"延迟",所以deferred对象的含义就是"延迟"到未来某个点再执行。
通常的做法是,为它们指定回调函数(callback)。即事先规定,一旦它们运行结束,应该调用哪些函数。
简单说,deferred对象就是jQuery的回调函数解决方案。在英语中,defer的意思是"延迟",所以deferred对象的含义就是"延迟"到未来某个点再执行。
you must use the success/error/complete callback options instead of the corresponding methods of the jqXHR object such as jqXHR.done() or the deprecated jqXHR.success().
所以你必须使用成功/失败/完成的回调函数来替代延迟方法或者不使用延迟方法
总结一下:
1.如果请求是异步的,不能在回调之外直接拿到返回的data
2.如果设为同步的话,会阻塞后面的代码,也就是说如果这个请求需要执行30秒,就必须等30秒执行完之后,才能继续执行下面的
3.同步不支持跨域请求和数据类型:’jsonp'请求
4,如果将请求设置为同步的话,则不支持延迟方法,不能使用$.Deferred,只能使用success/error/complete
来代替比如 deferred.always()/$.when 等
。。。虽然写完了,但是还是不大记得asyns怎么拼啊。。看来要去背背“asynchronous”这个发音了
相关推荐
Bonrui编程路 2020-06-07
89500297 2020-06-07
陈旭阳 2020-06-02
前端开发Kingcean 2020-05-29
niehanmin 2020-05-19
Magicsoftware 2020-03-28
Magicsoftware 2020-03-28
LorenLiu 2020-03-28
lyg0 2020-02-18
88520191 2020-01-30
前端开发Kingcean 2020-01-23
csuzxm000 2020-01-10
whynotgonow 2020-01-05
89500297 2020-01-03
88520191 2019-12-30
Trustport 2019-12-16
越前 2014-02-08