`

ajax -async 参数同步异步

 
阅读更多

开发项目写功能的时候,需要将ajax的返回值赋到全局变量中,然后在该页面其他地方引用,因为ajax异步的原因一直无法成功,只需将async:false,就OK了。

 

写这个帖子的原因是因为。。。每次需要同步的时候,我记不住‘asyns'这个单词的拼写,每次都得去其他的js里面粘一边过来,为了加深记忆,决定写个使后感。。。

 

  • async (default: true)
    Type: Boolean
    By default, all requests are sent asynchronously (i.e. this is set to true by default). If you need synchronous requests, set this option to false. Cross-domain requests and dataType: "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 as jqXHR.done() or the deprecated jqXHR.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'请求

 

什么是jsonp,json和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对象的含义就是"延迟"到未来某个点再执行。

 

 

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”这个发音了

 

2
4
分享到:
评论

相关推荐

    jQuery中的ajax async同步和异步详解

    在本文中,我们将详细讲解在jQuery的ajax方法中如何使用async参数控制请求是同步还是异步。 首先,我们需要理解什么是同步和异步请求。异步请求是指当一个请求发送给服务器后,浏览器不会等待服务器的响应,而是...

    layui-tree实现Ajax异步请求后动态添加节点的方法

    在本示例中,我们需要实现一个功能:当用户在树形菜单中选择某一节点时,通过 AJAX 异步请求向后台添加新的子节点,并在前端动态显示出来。 首先,我们看到 HTML 结构中有一个 `#demo` ID 的 `ul` 元素,它是 layui...

    关于解决jquery同步异步的问题

    ### 关于解决jQuery同步异步的问题 在前端开发过程中,我们经常会使用到jQuery库来进行DOM操作及Ajax请求等。而在处理Ajax请求时,默认情况下jQuery的`$.ajax()`方法是采用异步的方式执行的,这对于大部分场景来说...

    浅谈Jquery中Ajax异步请求中的async参数的作用

    async参数决定了Ajax请求是否为异步执行,即是否允许后续代码在Ajax请求还未完成时就执行。async参数是可选的,默认值为true,表示请求是异步进行的。若将async设置为false,则Ajax请求变为同步,浏览器会等待服务器...

    第十三课 ajax-011

    - `async`:默认为 true,表示异步请求。设为 false 可进行同步请求。 - `dataType`:预期服务器返回的数据类型,如 "json"、"html" 等。 - `headers`:自定义请求头,例如设置认证信息或内容类型。 - `statusCode`...

    ajax00009_async_trigger

    对于性能,可以考虑使用Promise或async/await来处理异步流程,使代码更易读,同时考虑使用Ajax的中断和取消机制来优化资源利用。 总之,"ajax00009_async_trigger"是一个解决Get请求缓存问题的Ajax框架,通过某种...

    workshop-async-callbacks

    当你发起一个异步操作(如Ajax请求或定时器)时,可以提供一个函数作为参数,这个函数将在异步操作完成后被调用。例如: ```javascript fs.readFile('file.txt', 'utf8', function(err, data) { if (err) throw ...

    ajax-code

    设置`xhr.open()`的第三个参数为true即为异步请求。 ### 4. 跨域问题 默认情况下,Ajax 请求受到同源策略限制,只能向同一域、协议和端口发送。跨域请求需服务器端支持CORS(跨源资源共享)或使用JSONP(JSON with...

    Ext.Ajax.request2.x实现同步请求

    `Ext.Ajax.request`的默认行为是异步的,如果想要实现同步请求,我们需要设置`async`参数为`false`。以下是一个基本的示例: ```javascript Ext.Ajax.request({ url: 'your-url', method: 'GET', // 或者 'POST' ...

    ajax参数详解

    async参数设置请求是否为异步模式,默认值是true,表示请求是异步的。如果是false,则请求为同步,同步请求会锁定浏览器,直到请求完成用户才能进行其他操作。 cache参数控制请求是否从浏览器缓存中加载信息。默认...

    jquery ajax 同步异步的执行 return值不能取得的解决方案

    通过将AJAX请求设置为同步模式,即在$.ajax()方法中设置async为false,这样可以确保AJAX请求在函数返回之前完成。代码示例如下: ```javascript function getAjaxReturn() { var bol = false; $.ajax({ type: ...

    ajax异步提交表单

    `async: false`表示此AJAX请求为同步请求。同步请求会阻塞浏览器直到请求完成,这可能会影响用户体验。通常推荐使用默认的异步模式(即`async: true`),除非有特殊需求。 ##### 5.5 成功回调 `success: function...

    ExtJs Ajax 同步问题

    同步与异步的控制则通过`async`参数来决定。默认情况下,`async`设置为`true`,意味着请求是异步的,也就是说,JavaScript不会等待服务器的响应,而是继续执行下一行代码。如果将`async`设为`false`,则请求变为同步...

    ajax同步异步简单实现

    在文章中提到了同步AJAX的实现方式,通过设置XMLHttpRequest对象的async属性为false,即可使AJAX请求同步执行。代码示例中,$.ajax()函数是jQuery提供的一个用来处理AJAX请求的方法,而async:false的设置就表明这个...

    extjs ajax同步请求所需js

    在使用`Ext.Ajax.request`方法时,设置`async`参数为`false`可以使请求变为同步。例如: ```javascript Ext.Ajax.request({ url: 'your-url', method: 'GET', async: false, // 设置为false表示同步请求 ...

    jQuery AJAX 扩展 ----自动放弃及 队列实现

    通常,`$.ajax()`请求默认是并行执行的,但通过`async: false`可以设置为同步,但这会导致浏览器阻塞。更好的方法是使用`$.when()`和`$.Deferred()`来创建和管理请求队列: ```javascript function makeRequest(url...

    example-ajax-call:标准 jQuery ajax 调用示例

    - `async`: 默认为true,表示异步请求。设置为false则变为同步请求。 - `contentType`: 设置发送数据的格式,例如'application/x-www-form-urlencoded; charset=UTF-8'。 - `headers`: 自定义请求头。 - `time...

    Java通过jQuery实现ajax异步请求

    4. **异步与同步**:AJAX的核心特性是异步,意味着请求不会阻塞页面的其他操作。通过设置`async: true`(默认值),可以确保请求在后台执行。如果需要等待请求完成再进行后续操作,可以使用`async: false`,但这会...

    extjs3.0 ajax 同步请求

    ### ExtJS 3.0 AJAX 同步请求详解 #### 一、引言 ...随着技术的发展,现代前端框架如 React、Vue 等已经很少使用同步 AJAX 请求,取而代之的是更高效的异步编程模式,如 Promise 和 async/await。

Global site tag (gtag.js) - Google Analytics