处理承诺时管理范围的更好方法是什么? - EmberJS

时间:2017-03-09 14:50:25

标签: javascript ember.js

我试图管理从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;
  });
}

0 个答案:

没有答案