我正在尝试理解一种在不使用bind的情况下将此上下文分配给promise的方法。
如果我有以下承诺
Ember.RSVP.Promise.all([
//THIS REFERS TO AN EMBER OBJECT
this.store.find('product', this.productSpecifications(null,null,"TRP")),
this.store.find('product', this.productSpecifications(null,null,"TRF")),
]).then(function (values){
this.set('recommendedPaid', values[0]);
this.set('recommendedFree', values[1]);
}.call(this)).catch(function(err){
console.log('error found in recommended products');
});
当我调用(this)回调函数时,我可以访问js对象,但响应“values”会丢失。
如何使用此方法将上下文设置为Ember Object并传递promise响应
答案 0 :(得分:0)
我会以经典方式执行此操作,方法是保存对您感兴趣的this
的引用:
var self = this;
Ember.RSVP.Promise.all([
self.store.find('product', self.productSpecifications(null,null,"TRP")),
self.store.find('product', self.productSpecifications(null,null,"TRF")),
]).then(function (values){
self.set('recommendedPaid', values[0]);
self.set('recommendedFree', values[1]);
}.catch(function(err){
console.log('error found in recommended products');
});