Javascript 使用jquery$.when的匿名函数

Javascript 使用jquery$.when的匿名函数,javascript,jquery,promise,Javascript,Jquery,Promise,目前,我有以下(此处简化)代码来执行两个Ajax调用,在使用when处理更多代码之前,我需要完成这两个调用(我知道这可以链接,但when构造是可扩展的) 这看起来很不雅观,所以我的问题是如何将两个命名函数f1和f2转换为名为inline的匿名函数。简单地用f1函数的内容替换(比如)f1是不起作用的 在我看来,这应该很简单,但我一直在逃避。您将承诺传递给$。when()不是函数。所以,你能做的是: $.when($.ajax(...), $.ajax(...)).then(...) 不需要中间函

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

这看起来很不雅观,所以我的问题是如何将两个命名函数f1和f2转换为名为inline的匿名函数。简单地用f1函数的内容替换(比如)f1是不起作用的


在我看来,这应该很简单,但我一直在逃避。

您将承诺传递给
$。when()
不是函数。所以,你能做的是:

$.when($.ajax(...), $.ajax(...)).then(...)
不需要中间函数。

只需执行以下操作:

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

function(ID){/*f1 code*/},function(ID){/*f2 code*/}
没有匹配的
一般规则(假设你的函数没有副作用,只执行返回):如果
f()
返回
a
并且你正在调用
g(f())
那么你可以调用
g(a)
因为
f()==A
。基本上,如果您正在调用一个只返回某个内容的函数,那么在删除
return
关键字后,您总是可以将该内容替换为函数调用。@Barmar:my bad,从模板中的一个视图复制并调整了该函数,该模板中的实际URL是由PHP编写的,没有结束?>
$.when(
  $.ajax({
    url: "'/ajax/getF1/')?>" + '/' + ID,
    dataType: "json"       
  }),
  $.ajax({
    url: "'/ajax/getF2/')?>" + '/' + ID,
    dataType: "json"       
  })
).done(function(a1,a2) {
   ....do something...
})