我想要做三个jQuery帖子,设置他们的结果等于一个变量超出他们的范围,然后三个都返回后,如果他们成功,执行另一个功能。现在我正在做嵌套回调,如果可能的话,我想离开。
我看着jQuery的承诺和deferreds的文件,但还没有想出如何使用它以$。员额功能
我当前的代码:
var workout, diet, feedback
var postobj = { id: workoutId };
$.post("./RowingWorkouts/GetWorkoutUsingId", postobj, function(result) {
workout = result;
$.post("./Diet/GetDietUsingId", postobj, function(result) {
diet = result;
$.post("./RowingWorkouts/GetWorkoutFeedback", postobj, function(result) {
feedback = result;
renderCharts(workout, diet, feedback);
});
});
});
我想做(伪代码-ISH):
var workout, diet, feedback
var postobj = { id: workoutId };
var getWorkout = $.post("./RowingWorkouts/GetWorkoutUsingId", postobj, function(result) {
workout = result;
});
var getDiet = $.post("./Diet/GetDietUsingId", postobj, function(result) {
diet = result;
});
var getFeedback = $.post("./RowingWorkouts/GetWorkoutFeedback", postobj, function(result) {
feedback = result;
});
// When all three are successful - I haven't gotten the when syntax to actually work yet
$.when(All3AreSuccessful).doThisOrSomething(renderCharts(workout, diet, feedback));
如果有一个更优雅的方式做到这一点,我很高兴切换了我的代码了。我想要使用promises,现在就推迟了,因为尽管这段代码很简单,并且使用嵌套回调很容易理解,但我宁愿学习一种新工具,并且尽快切换开关。
使用'Q'库(https://github.com/kriskowal/q)作为承诺。 – Lekhnath
谢谢,看起来很酷,但我试图只使用jQuery和jQuery UI库。 –