javascript - Ember : Resolve complex async promises

标签 javascript asynchronous ember.js ember-data

我有一个用例,其中 Ember 数据中的所有模型关系都是异步加载的。我有一条路线,根据parent.child是否与特定模型匹配,在下面的示例中渲染祖 parent 。

到目前为止,我已经能够解决祖 parent 和 parent 模型异步加载的问题,但随后我的代码变得非常困惑。

是否有任何有用的策略可以过滤掉祖 parent ,而不必处理每个级别的 promise ?

模型定义示例

App.Grandparent = DS.Model.extend({
    ...
    parents: DS.hasMany('Parent', { async: true })
});

App.Parent = DS.Model.extend({
    ...
    grandParent: DS.belongsTo('Grandparent', { async: true }),

    child: DS.belongsTo('Child', { async: true })
});

App.Child = DS.Model.extend({
    ...
});

代码示例

    var client = this.modelFor('workspace.client');


    var promise = new Ember.RSVP.Promise(function(resolve)
    {

        client.get('sessions').then(function(sessions)
        {

            Ember.RSVP.all(sessions.getEach('exercises')).then(function(exercises)
            {

                Ember.RSVP.all(exercises.getEach('exercise')).then(function()
                {

                    console.log("RESOLVED");

                    resolve(sessions);

                });


            });


        });

    });

最佳答案

我认为你可以通过链接 promise 来简单地逃脱。

var client = this.modelFor('workspace.client');

return client.get('sessions').then(function(sessions) {
  return Ember.RSVP.all(sessions.getEach('exercises'));
}).then(function(exercises) {
  return Ember.RSVP.all(exercises.getEach('exercise'));
}).then(function(allExercises) {
  console.log("RESOLVED");
  return allExercises;
});

注意:不确定您在通过 session 解决问题时想要做什么,并且在练习中不做任何事情

关于javascript - Ember : Resolve complex async promises,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27377478/

相关文章:

javascript - Chrome.tabs.executeScript - 标签未定义

java - 处理 Play 2.1 中的阻塞操作

android - native 模块 RNC_AsyncSQLiteDBStorage 试图覆盖 AsyncStorageModule

javascript - Node js 请求 promise 、抓取

devise - 创建带有实时验证的 Ember 表单的最佳实践是什么?

javascript - Ember.js:如何在组件测试中断言事件未绑定(bind)?

javascript - 在父元素之后稍微淡化子元素

javascript - 可在 jQuery 插件外部访问的对象

javascript - Marionette onAttach 事件

javascript - 在 ember 中记录单选按钮的值