jQuery$。然后使用前面函数中的参数
我有三个ajax电话。第二个应接收来自第一个结果的参数,第三个应接收来自第二个结果的参数。例如:jQuery$。然后使用前面函数中的参数,jquery,Jquery,我有三个ajax电话。第二个应接收来自第一个结果的参数,第三个应接收来自第二个结果的参数。例如: var getYears = function getYears() {return $.ajax({....});}; var getMonths = function(year) {return $.ajax({...});}; var getDays = function(month, year) {return $.ajax({...})}; 我完全不知道如何将这些链接成$.when()
var getYears = function getYears() {return $.ajax({....});};
var getMonths = function(year) {return $.ajax({...});};
var getDays = function(month, year) {return $.ajax({...})};
我完全不知道如何将这些链接成$.when()
到目前为止,我所做的一切都很好,但我更喜欢用$.when()
的方式来做,因为我稍后会在代码中提到结果
function init() {
var y, m, d;
getYears().then(function (years) {
var year = years.d[0];
y = years.d;
getMonths(year).then(function (months) {
var month = months.d[0].MonthNo;
m = months.d;
getDays(month, year).then(function (days) {
d = days.d;
}).done(function () {
return initialize = { years: y, months: m, days: d };
});
});
});
};
当我使用时:
$.when(
getYears(),
getMonths(//here i need to refer the result of getYears),
getDays(//here needs the result of getMonths).done(function()
{// do something else})
);
$。当()
接受由逗号分隔的承诺(数组不起作用)时,一旦所有这些承诺都已解决,它就会按照$指定的顺序将它们传递给函数。当()
时。这样,您就不必担心哪个回调首先完成
例如:
$.when(getyears,getmoths,getdays).then(function(year,month, day){
console.log("today is: " + year + month + day);
});
为了在需要对ajax调用使用$.deferred()
时传递这些承诺,以便它们返回承诺。您想这样做吗?
init().done(函数(日、月、年){/*stuff*/})代码>特别是?类似于?(作为评论发布,因为我不确定这是否是您想要做的)。在jq 1.8+中,您可以将then
,类似于:getYears()。然后(函数(years){return getMonths(years.d[0])。然后(…)
现在我想知道,如何将year
值传递到getDays()?!我知道,我发现的大多数示例都不需要以前的函数结果作为参数。@Emin您是否检查了我上面发布的示例?另一个是真正的ajax调用。@Yoshi,感谢您抽出时间准备这个示例,但是,我目前在$上使用了类似的功能。然后$然后确保一个函数在到达另一个函数之前完成。。但是,我的问题是如何使用$。当所有函数都成功完成时,我运行另一个函数?getMonths()需要年份作为参数,来自getyears()@A.Wolff ahh-got-ya。我觉得比这更复杂