我试图管理从ember中的promise中将变量传递给.then()
回调,但是在返回promise之前,该变量已从内存中删除。
handleResponse(params) {
this.get('model.item').then((item) => {
item.handleResponse(params);
});
}
当然,params
在传递给项目的方法时是未定义的,因为它已经超出了范围。
我通过将params设置为控制器上的属性来解决这个问题:
this.set('params', params);
在调用该项目之前。但必须有更好的方法吗?我已尝试将params
绑定到回调:.bind(params)
,但出于某种原因,这样做无效。
修改:
可能的解决方案:
function handleResponse(params) {
var promise = this.getItem()
promise.then((item) => {
item.handleResponse(params);
});
}
function getItem() {
return this.get('model.item').then((item) => {
return item;
});
}