当前位置: 首页 > 面试题库 >

JavaScript:订购AJAX调用

罗智刚
2023-03-14
问题内容

我对特定功能有3个ajax调用。第三通话取决于前两个通话,即对于第三通话,必须完成前两个通话。但是前两个AJAX调用是独立的。因此,我希望它们异步并并行执行。

现在如何组织这些电话?我试图将它们放在各个调用的嵌套成功块中,但是前两个调用也不是独立的。

如果可能,请提出一些sudo代码。


问题答案:

使用诺言和$.when

$.when(ajaxCall1(), ajaxCall2()).then(ajaxCall3);

在哪里ajaxCallX

function ajaxCall1() {
    return $.ajax(...);
}

这基本上意味着“在解决了诺言ajaxCall1和诺言之后ajaxCall2,执行功能ajaxCall3”。

之所以可行,是因为$.ajax(和类似方法)返回的对象实现了promise接口。也可以在$.ajax文档中找到更多信息。

每个Ajax调用的响应都then作为参数传递给回调。您可以将它们作为

$.when(ajaxCall1(), ajaxCall2()).then(function(a1, a2) {
    // a1[0] is the response of the first call
    // a2[0] is the response of the second call
    ajaxCall3(a1[0], a2[0]);
});

看看$.when文档中的另一个示例。



 类似资料:
  • 问题内容: 我有一个与数据库对话的servlet,然后返回一个有序(按时间排序)对象的列表。在servlet部分,我有 从日志中,我可以看到数据库以正确的顺序返回了User对象。 在前端,我有 但是顺序改变了。 我只在返回的列表很大(超过130个用户)时才注意到这一点。 我尝试使用Firebug进行调试,Firebug中的“响应选项卡”显示列表的顺序与servlet中的日志不同。 我做错了什么吗?

  • 我是Flink的新手,我试图理解Flink是如何在其的并行抽象中命令调用。考虑这个产生部分和的流的例子: 我希望它的输出是流:。事实上,就在这里。 是否可以安全地假设这种情况始终存在,尤其是在从具有大量并行性的源读取数据时?

  • 问题内容: 我了解AJAX跨域策略。因此,我不能仅仅通过ajax HTTP请求调用“ http://www.google.com ”,并将结果显示在我的网站上。 我使用dataType“ jsonp”进行了尝试,这实际上可以工作,但是出现语法错误(显然是因为接收到的数据不是JSON格式的) 还有其他可能性可以从外部域接收/显示数据吗?iFrame是否遵循相同的政策? 问题答案: 使用AJAX获取跨

  • 我试图回到IabHelper。OnIabPurchaseFinishedListener当购买结束时,我的订阅,但问题是它没有调用购买完成。 我已经尝试了onactive结果,但仍然不能在这里工作是我的代码块,我正在扩展下面的片段 我提到了这个链接

  • 问题内容: 在Java中,是否有一个对象的作用类似于用于存储和访问键/值对的Map,但是可以返回键的有序列表和值的有序列表,从而使键和值列表的顺序相同? 因此,按照代码进行解释,我正在寻找某种行为,就像我的虚拟OrderedMap: 问题答案: 该SortedMap的接口(与实施TreeMap的)应该是你的朋友。 该接口具有以下方法: keySet() 它以升序返回一组键 values() 它以对

  • 问题内容: 我有一个Vehicles的PriorityQueue,其中有一个项目未正确订购。我认为我的compareTo中有些东西很奇怪,但是我找不到它。 我有一个主类,它创建PriorityQueue,创建一堆Vehicle对象,然后将它们添加到队列中。 我期望这个输出: 但是我得到了这个: 问题答案: 您的队列和方法可能正常工作。请注意API关于它的说明: 此类及其迭代器实现Collectio