2

在我的 Javascript 文件中,我有多个 ajax 调用,我想将所有 ajax 调用更改为一个 ajax 调用。这是我的示例 JS 代码。

var vpnPin = $.ajax({ 
  dataType: "json",
  url: "url",
  async: true,
  success: function(result) {}                     
});  //$.ajax() ends


var vpnDataPlan = $.ajax({ 
  dataType: "json",
  url: "url",
  async: true,
  success: function(result) {}  
});  //$.ajax() ends

我们如何将多个 AJAX 调用调用到一个 AJAX 调用?

4

2 回答 2

7

可以在 javascript 中使用 Promise 概念。阅读promises 和 deferred

使用上面的示例,可以这样做:

//assuming vpnPin and vpnDataPlan are the deferred object returned from $.ajax.
//As you have done in your example.

$.when(vpnPin, vpnDataPlan).done(function(){
    //work to do after the completion of both calls.
});

这还有很多变体。RSVP实现了处理承诺的标准方式。

于 2013-07-30T09:54:53.163 回答
3

大多数情况下不可能

每个 ajax 调用都涉及浏览器将信息发送到特定 URL 的服务器。

如果您将浏览器代码从两个 ajax 调用减少到一个 ajax 调用,服务器将接收到更少的信息,浏览器将不会接收到它现在正在获取的某些信息,和/或服务器将执行更少的操作。

如果您控制服务器代码,您可能能够更改服务器代码,以便能够在一个步骤中完成这两项操作。只有这样您才能更改浏览器代码。

于 2013-07-30T04:47:51.207 回答