【问题标题】:Backbone fetch, promises and if else. how do they work?Backbone fetch,promises 和 if else。他们是如何工作的?
【发布时间】:2014-04-10 23:46:25
【问题描述】:

我有一个问题,我不确定如何在我的主干应用程序中巧妙地解决。我有一个需要获取 2 或 3 个不同模型的视图。

我有一个个人资料视图,它向客户显示他的任务和个人资料信息,但是当教练访问它时,我还想加载教练模型以使教练能够切换内容。

promise 如何处理 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);
    });
}

promise 如何与 if else 语句一起使用?

【问题讨论】:

    标签: javascript jquery backbone.js promise


    【解决方案1】:

    您的代码看起来正确。代码中的 if/else 语句根本不会影响所有承诺,因为您在相应的块中拥有所有 .fetch() 调用。请记住将所有这些集合传递给您正在显示的布局。

    【讨论】:

      【解决方案2】:

      你可以在一个数组上收集你的 Promise,然后将它们传递给 $.when

      var promises = [];
      
      promises.push( modelA.fetch() ); // default
      if(value){ 
         promises.push( modelB.fetch() ); // conditionally added
      }
      
      $.when.apply($, promises).then(function(){
         // do your stuff
      });
      

      【讨论】:

        猜你喜欢
        • 2014-12-05
        • 1970-01-01
        • 1970-01-01
        • 2019-10-13
        • 2011-07-20
        • 1970-01-01
        • 2020-11-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多