Ember承诺如果可以的话就不会开火

时间:2015-11-17 19:42:53

标签: ember.js promise

当我从商店加载一些数据时,我想在ember组件中显示加载微调器。如果商店出错,我想妥善处理。

以下是我当前代码的片段:

cachedCampaignDataIsPending: computed.readOnly('fetchCachedCampaignData.isPending'),

fetchCachedCampaignData: computed('campaign', function() {
  return this.get('store').findRecord('cachedCampaignMetric').then( (cachedMetrics) => {
    this.set('cachedCampaignData', cachedMetrics);
  }, () => {
    this.set('errors', true);
  });
}),

如果服务器响应错误,这将正确地将错误设置为true,但cachedCampaignDataIsPending无法正常运行。它没有设置为true。

但是,如果我重写我的代码以使计算属性不是 thenable ,那么它确实会触发。

fetchCachedCampaignData: computed('campaign', function() {
  return this.get('store').findRecord('cachedCampaignMetric');
}),

使用then / catch逻辑,任何人都知道原因或如何使其正常启动?

感谢。

更新

我发现这对我有用,并且给了我需要的东西。

cachedCampaignDataIsPending: computed.readOnly('fetchCachedCampaignData.isPending'),

fetchCachedCampaignData: computed('campaign', function() {
  let promise = this.get('store').findRecord('cachedCampaignMetric');
  promise.then( (cachedMetrics) => {
    this.set('cachedCampaignData', cachedMetrics);
  }, () => {
    this.set('errors', true);
  });
  return promise;
}),

0 个答案:

没有答案