我遇到了一个承诺小问题。我确定运行循环允许解决我的问题,但它仍然有点模糊。问题在这里:我有一个组件会执行一些沉重的Ajax调用,可能需要几秒钟才能完成。当承诺解决时,我将数据设置为组件,以便它可以呈现图形。问题是,如果在此期间,用户转换到新页面,则视图(以及所有组件)被销毁,并且在承诺解决时,它会尝试设置一个还不存在的对象。和繁荣,我有一个“试图设置被毁坏的对象错误”。下面是该方法的一小部分被调用的时候,承诺的决心:EmberJS:当视图被破坏时答应回调?
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);
});
},
非常感谢!
尝试检查self.get(“isDestroyed”)里面的最后Ember.run –
谢谢。它的工作原理,但我实际上需要添加数据和Ember.run内的检查。没有更好的方法吗? –