使用jquery $ .when的匿名函数

时间:2016-08-19 21:10:34

标签: javascript jquery promise

我目前有以下(简化为此)代码来执行两个Ajax调用,我需要在使用when处理更多代码之前完成这些调用(我知道这可以链接但是when构造是可扩展的)。

function f1(ID) {  
    return $.ajax({
        url: "'/ajax/getF1/')?>" + '/' + ID,
        dataType: "json"       
    });
}

function f2(ID) {  
    return $.ajax({
        url: "'/ajax/getF2/')?>" + '/' + ID,
        dataType: "json"       
    });
}

 $.when(
   f1(ID),
   f2(ID)
 ).done(function(a1,a2) {
   ....do something...
 });

这似乎不优雅,所以我的问题是如何将两个命名函数f1和f2转换为内联的匿名函数。简单地用f1函数的内容替换(假设)f1并不起作用。

在我看来,这应该是简单的,但它是在逃避我。

2 个答案:

答案 0 :(得分:4)

您将承诺传递给$.when()而不是函数。那么,你能做的就是:

$.when($.ajax(...), $.ajax(...)).then(...)

不需要中间功能。

答案 1 :(得分:1)

只是做:

$.when(
  $.ajax({
    url: "'/ajax/getF1/')?>" + '/' + ID,
    dataType: "json"       
  }),
  $.ajax({
    url: "'/ajax/getF2/')?>" + '/' + ID,
    dataType: "json"       
  })
).done(function(a1,a2) {
   ....do something...
})