我有一个问题,我不确定如何在我的骨干应用程序中巧妙地解决。我有一个视图,需要提取2或3个不同的模型。
我有一个个人资料视图,向客户显示他的任务和个人资料信息,但是当教练访问它时,我还想加载教练模型以使教练能够切换内容。
promises如何使用if else语句?我可以按照我编写的方式编写代码并以这种方式工作吗?
var tasks = new App.Task.Collections.Tasks();
var coaches = new App.Coach.Collections.Coaches();
var user = new App.User.Models.User();
if(App.User.Models.currentUser.isCoach()){
var userPromise = user.fetch();
var coachPromise = coaches.fetch();
var tasksPromise = tasks.fetch({
data: {
userId: userdId
}
});
$.when(userPromise, coachPromise, tasksPromise).then(function(){
App.Layout.page.show(layout);
});
}else{
var userPromise = user.fetch();
var tasksPromise = tasks.fetch({
data: {
userId: userdId
}
});
$.when(userPromise, tasksPromise).then(function(){
App.Layout.page.show(layout);
});
}
promises如何使用if else语句?
答案 0 :(得分:1)
您的代码看起来是正确的。代码中的if / else语句不会影响所有承诺,因为您在相应的块中拥有所有.fetch()
个调用。只需记住将所有这些集合传递给您正在显示的布局。
答案 1 :(得分:0)
您可以在数组上收集您的承诺,然后将它们传递给$ .when
var promises = [];
promises.push( modelA.fetch() ); // default
if(value){
promises.push( modelB.fetch() ); // conditionally added
}
$.when.apply($, promises).then(function(){
// do your stuff
});