使用Q.nfcall时在ES6类中绑定正确的上下文

时间:2016-09-21 17:41:28

标签: node.js ecmascript-6 q

我正在使用let loadPromise = Q.nfcall(m.loadObj,data); 包进行异步调用:

m

class Base { constructor() { this._name = null;; } loadObj(data) { this._name = data; } } 是此类的一个实例:

this

输入undefined方法后问题是loadObjQ

loadObj wiki中所述:

  

如果您正在使用方法而不是简单的函数,则可以   容易遇到将方法传递给另一个方法的常见问题   类似函数Q.nfcall-从其所有者“取消绑定”该方法。避免   这个,你可以使用Function.prototype.bind

如何将正确的上下文绑定到public function companyStatus() { return $this->hasOne('CompanyUser')->select('status', 'user_id'); } and it now returns the following: 方法?

1 个答案:

答案 0 :(得分:0)

正如Q的文档所述 - 你可以使用ninvoke来避免像这样的绑定:

let loadPromise = Q.ninvoke(m, 'loadObj', data);

显然,你也可以在这里重新绑定:

let loadPromise = Q.nfcall(m.loadObj.bind(m), data);