我最近对此代码有疑问:
function doSth() {
console.log(this);
}
const fWithMeteorEnv = Meteor.bindEnvironment(doSth);
fWithMeteorEnv.call({}); // expect to see a plain object in console
我所期望的是在控制台中看到一个普通对象,但是没有,那是另外一回事。似乎
Meteor.bindEnvironment
阻止了用另一个上下文调用返回的函数。有什么办法可以解决这个问题? 最佳答案
我认为您要实现的目标是不可能的,即,在调用Meteor.bindEnvironment
时需要绑定(bind)上下文。您可以使用.bind()
完成此操作,例如
const fWithMeteorEnv = Meteor.bindEnvironment(doSth.bind(context));
或者您可以将上下文作为第三个参数传递给
Meteor.bindEnvironemnt()
,例如const fWithMeteorEnv = Meteor.bindEnvironment(doSth, null, context);
第二个参数是异常回调。