Ember 更新导致模板中的承诺不等待解析

Ember update causes promises in templates to not wait to resolve

我正在进行 ember 1.12.1 -> 1.13.11 和 ember 数据 1.0.0-beta.19.1 -> 1.13.15 更新。我之前有一个模板:

{{a-component parent=model.parent}}

和一个组件

parentChanged: on('init', observer('parent', function() {
  var parent = this.get('parent');
  if (parent) {
    parent.get('child').then(child => {
      this.set('child', child);
    });
  }
}))

这以前有效,但更新后,childthen 调用后未定义。我不得不将其更改为

parentChanged: on('init', observer('parent', function() {
  var parent = this.get('parent');
  if (parent) {
    parent.then(parent => {
      parent.get('child').then(child => {
        this.set('child', child);
      });
    });
  }
}))

让它恢复到更新前的状态。

有人知道这是为什么吗?似乎模板在更新后停止解析承诺。

交联 https://github.com/emberjs/ember.js/issues/12732

因此,经过一些挖掘和重现 http://emberjs.jsbin.com/ququdenari/edit?html,js,output,我无法在 1.12.1 中仅使用 promises 获得初始工作案例。这让我相信这可能是 ember-data 建立关系承诺的方式,并且自从我从 1.0.0-beta.19.1 更新到 1.13.15 以来,任何重大变化都是公平的游戏。

总之,我更好地理解了我的目标。

编辑:

我做了一个插件 ember-resolve-promise-helper 来帮助从您的代码中抽象出这个问题。