AJAX ASYNC虚假与真实

kma*_*lik 4 ajax jquery

我在这里有一个测试网站(kdmalikdesign.com/test/rsd/index.html).我正在用它做一堆事情.我主要担心的是现在它不起作用,除非ASYNC是假的,我听说这是不好的做法?

现在我已经确定async是false的原因是因为当我触发成功回调时,xml数据没有被加载但是当我加载完成的回调时,一切都很好.我不得不将其更改为async false以使其与成功回调一起正常工作.

有没有具体的方法来做这件事?基本上ajax调用正在做的是抓取一个xml文件并通过它读取它,具体取决于使用特定数据填充页面的文件名.我这样做基本上是练习/练习.

卡门隆,谢谢你

Séb*_*uld 5

运行同步调用通常是一种弊端,因为当您使用回调以异步方式执行相同操作时,您正在有效地运行请求而失去异步性的所有好处.

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的东西的工具,并同时实现waterfallparallel运行模式.

故事的士气:async:false可以100%的时间被回调替换.