我想使用异步第三方lib调用并获得结果。 所以我将回调方法包装在Meteor.bindEnvironment中,因为流星代码必须始终在光纤内运行:
server(Meteor.bindEnvironment(function (device) {
device.on('foo', Meteor.bindEnvironment(function (data) {
var someVar = this.getSomeVar();
MyCollection.insert(someVar, data);
}));
}));
但是当我使用这种方法时,我无法访问回调的原始上下文 函数,所以this.getSomeVar总是未定义的。
为了防止这种情况,我直接使用Fiber,看起来很有效。但我不确定 如果它可靠:
server(function (device) {
device.on('foo', (data) {
var someVar = this.getSomeVar();
Fiber(function() {
MyCollection.insert(someVar, data);
}).run();
});
});
这种方式会有一些副作用吗?