我在这里有一个测试网站(kdmalikdesign.com/test/rsd/index.html).我正在用它做一堆事情.我主要担心的是现在它不起作用,除非ASYNC是假的,我听说这是不好的做法?
现在我已经确定async是false的原因是因为当我触发成功回调时,xml数据没有被加载但是当我加载完成的回调时,一切都很好.我不得不将其更改为async false以使其与成功回调一起正常工作.
有没有具体的方法来做这件事?基本上ajax调用正在做的是抓取一个xml文件并通过它读取它,具体取决于使用特定数据填充页面的文件名.我这样做基本上是练习/练习.
卡门隆,谢谢你
运行同步调用通常是一种弊端,因为当您使用回调以异步方式执行相同操作时,您正在有效地运行请求而失去异步性的所有好处.
async:false将导致jQuery.ajax()调用阻塞,直到它返回.实际上,在伪代码中,而不是:
function ajax:
perform request
callback with results
Run Code Online (Sandbox Code Playgroud)
你这样做:
function ajax:
perform request
while (no results) wait
return results
Run Code Online (Sandbox Code Playgroud)
这完全阻止了其他任何事情的执行,直到结束......这非常可怕.它的明显用例是以waterfall模式运行东西:task 1 -> task 2 -> task 3这可能发生.
如果您能够阻止浏览器,仍然可以考虑使用回调.它们将允许您在处理内容时保持站点的其余部分活动.您可以通过async:true在下一步设置并提供回调来轻松完成此操作.但是,您最终可能会使用回调意大利面,如果您拥有它们,可能需要使用库来管理大型操作.
一个非常好的候选人来自Node.JS,并被称为async.js.它是在对MapReduce的东西的工具,并同时实现waterfall和parallel运行模式.
故事的士气:async:false可以100%的时间被回调替换.
| 归档时间: |
|
| 查看次数: |
19164 次 |
| 最近记录: |