Ember.js 余烬的承诺是结束不开火,如果可以的话

Ember.js 余烬的承诺是结束不开火,如果可以的话,ember.js,promise,Ember.js,Promise,当我从存储加载一些数据时,我想在余烬组件中显示一个加载微调器。如果商店有错误,我想适当地处理它 以下是我当前代码的一个片段: cachedCampaignDataIsPending: computed.readOnly('fetchCachedCampaignData.isPending'), fetchCachedCampaignData: computed('campaign', function() { return this.get('store').findRecord('cac

当我从存储加载一些数据时,我想在余烬组件中显示一个加载微调器。如果商店有错误,我想适当地处理它

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

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,但是,
cachedCampaInDaisPending
操作不正常。它没有设置为true

但是,如果我重写代码使computed属性不为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;
}),

您应该将此作为答案发布并接受它。您应该将此作为答案发布并接受它。