Javascript EmberJS:当视图被破坏时承诺回调?

Javascript EmberJS:当视图被破坏时承诺回调?,javascript,ember.js,Javascript,Ember.js,我对承诺有个小问题。我确信运行循环可以解决我的问题,但它对我来说仍然有点模糊。这里的问题是:我有一个组件可以执行一些繁重的ajax调用,这可能需要几秒钟才能完成。当问题解决后,我将数据设置到组件中,以便它可以从中呈现图形。问题是,如果同时用户转换到新页面,视图(和所有组件)将被破坏,并且当承诺解决时,它将尝试设置为一个尚不存在的对象。砰的一声,我有一个“试图设置破坏对象错误”。下面是在承诺解析时调用的方法的一小部分: updateChart: function(timeframe, interv

我对承诺有个小问题。我确信运行循环可以解决我的问题,但它对我来说仍然有点模糊。这里的问题是:我有一个组件可以执行一些繁重的ajax调用,这可能需要几秒钟才能完成。当问题解决后,我将数据设置到组件中,以便它可以从中呈现图形。问题是,如果同时用户转换到新页面,视图(和所有组件)将被破坏,并且当承诺解决时,它将尝试设置为一个尚不存在的对象。砰的一声,我有一个“试图设置破坏对象错误”。下面是在承诺解析时调用的方法的一小部分:

updateChart: function(timeframe, interval) {
   var self   = this;
   var method = 'get' + this.get('type').capitalize();

   this.set('isLoading', true);

   this.get('slowService')[method](this.get('project')).then(function(result) {
     Ember.run(function() {
       self.set('isLoading', false);
     });

    self.set('data', result);
 });
},


非常感谢

这个问题提出已经快2年了;但从那天起,情况发生了很大变化。我只是想发布一个答案,以便将来看到这个问题的人都知道这不再是一个问题

有一个很好的插件,可以用来精确地解决这个问题中提到的问题。提供可撤销的书面承诺。page明确表示本问题中的案例总结如下:


“ember并发使您能够编写任务,这些任务是异步的、可取消的操作,绑定到它们所在的对象的生存期,这意味着当主机对象被销毁(例如组件未被渲染)时,任务将自动取消。”

尝试在最终ember.RunThank中检查self.get(“isDestroyed”)。它可以工作,但我实际上需要在Ember.run中添加数据和内部的检查。难道没有更好的办法吗?