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