开发项目写功能的时候,需要将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”这个发音了
相关推荐
在本文中,我们将详细讲解在jQuery的ajax方法中如何使用async参数控制请求是同步还是异步。 首先,我们需要理解什么是同步和异步请求。异步请求是指当一个请求发送给服务器后,浏览器不会等待服务器的响应,而是...
在本示例中,我们需要实现一个功能:当用户在树形菜单中选择某一节点时,通过 AJAX 异步请求向后台添加新的子节点,并在前端动态显示出来。 首先,我们看到 HTML 结构中有一个 `#demo` ID 的 `ul` 元素,它是 layui...
### 关于解决jQuery同步异步的问题 在前端开发过程中,我们经常会使用到jQuery库来进行DOM操作及Ajax请求等。而在处理Ajax请求时,默认情况下jQuery的`$.ajax()`方法是采用异步的方式执行的,这对于大部分场景来说...
async参数决定了Ajax请求是否为异步执行,即是否允许后续代码在Ajax请求还未完成时就执行。async参数是可选的,默认值为true,表示请求是异步进行的。若将async设置为false,则Ajax请求变为同步,浏览器会等待服务器...
- `async`:默认为 true,表示异步请求。设为 false 可进行同步请求。 - `dataType`:预期服务器返回的数据类型,如 "json"、"html" 等。 - `headers`:自定义请求头,例如设置认证信息或内容类型。 - `statusCode`...
对于性能,可以考虑使用Promise或async/await来处理异步流程,使代码更易读,同时考虑使用Ajax的中断和取消机制来优化资源利用。 总之,"ajax00009_async_trigger"是一个解决Get请求缓存问题的Ajax框架,通过某种...
当你发起一个异步操作(如Ajax请求或定时器)时,可以提供一个函数作为参数,这个函数将在异步操作完成后被调用。例如: ```javascript fs.readFile('file.txt', 'utf8', function(err, data) { if (err) throw ...
设置`xhr.open()`的第三个参数为true即为异步请求。 ### 4. 跨域问题 默认情况下,Ajax 请求受到同源策略限制,只能向同一域、协议和端口发送。跨域请求需服务器端支持CORS(跨源资源共享)或使用JSONP(JSON with...
`Ext.Ajax.request`的默认行为是异步的,如果想要实现同步请求,我们需要设置`async`参数为`false`。以下是一个基本的示例: ```javascript Ext.Ajax.request({ url: 'your-url', method: 'GET', // 或者 'POST' ...
async参数设置请求是否为异步模式,默认值是true,表示请求是异步的。如果是false,则请求为同步,同步请求会锁定浏览器,直到请求完成用户才能进行其他操作。 cache参数控制请求是否从浏览器缓存中加载信息。默认...
通过将AJAX请求设置为同步模式,即在$.ajax()方法中设置async为false,这样可以确保AJAX请求在函数返回之前完成。代码示例如下: ```javascript function getAjaxReturn() { var bol = false; $.ajax({ type: ...
`async: false`表示此AJAX请求为同步请求。同步请求会阻塞浏览器直到请求完成,这可能会影响用户体验。通常推荐使用默认的异步模式(即`async: true`),除非有特殊需求。 ##### 5.5 成功回调 `success: function...
同步与异步的控制则通过`async`参数来决定。默认情况下,`async`设置为`true`,意味着请求是异步的,也就是说,JavaScript不会等待服务器的响应,而是继续执行下一行代码。如果将`async`设为`false`,则请求变为同步...
在文章中提到了同步AJAX的实现方式,通过设置XMLHttpRequest对象的async属性为false,即可使AJAX请求同步执行。代码示例中,$.ajax()函数是jQuery提供的一个用来处理AJAX请求的方法,而async:false的设置就表明这个...
在使用`Ext.Ajax.request`方法时,设置`async`参数为`false`可以使请求变为同步。例如: ```javascript Ext.Ajax.request({ url: 'your-url', method: 'GET', async: false, // 设置为false表示同步请求 ...
通常,`$.ajax()`请求默认是并行执行的,但通过`async: false`可以设置为同步,但这会导致浏览器阻塞。更好的方法是使用`$.when()`和`$.Deferred()`来创建和管理请求队列: ```javascript function makeRequest(url...
- `async`: 默认为true,表示异步请求。设置为false则变为同步请求。 - `contentType`: 设置发送数据的格式,例如'application/x-www-form-urlencoded; charset=UTF-8'。 - `headers`: 自定义请求头。 - `time...
4. **异步与同步**:AJAX的核心特性是异步,意味着请求不会阻塞页面的其他操作。通过设置`async: true`(默认值),可以确保请求在后台执行。如果需要等待请求完成再进行后续操作,可以使用`async: false`,但这会...
### ExtJS 3.0 AJAX 同步请求详解 #### 一、引言 ...随着技术的发展,现代前端框架如 React、Vue 等已经很少使用同步 AJAX 请求,取而代之的是更高效的异步编程模式,如 Promise 和 async/await。