当我运行 <collection>.find ({})
时,在 Meteor.binEnvironment 中已经存在的函数中,我收到错误 throw new Error ('Can \' t wait without a fiber ');
如果您也在 Meteor.bindEnvironment(<collection>.find ({}))
内调用该电话,错误消息变为:throw new Error (noFiberMessage);
有问题的函数贯穿 Meteor.methods ({})
我哪里出错了?
重现错误的示例:
Meteor.methods({
"teste" : Meteor.bindEnvironment(function(){
var Future = Meteor.require('fibers/future');
var future = new Future();
setTimeout(function(){
return future.return(Sessions.findOne({}))
}, 15000);
console.log('fut', future.wait());
})
});
最佳答案
尝试改用Meteor._wrapAsync
。
这是异步函数的示例,但任何其他函数都可以:
var asyncfunction = function(callback) {
Meteor.setTimeout(function(){
callback(null, Sessions.findOne({}))
}, 15000);
}
var syncfunction = Meteor._wrapAsync(asyncfunction);
var result = syncfunction();
console.log(result);
您可以包装任何异步函数并使其同步,并以这种方式将纤程与其绑定(bind)。
关于Meteor.Collection 与 Meteor.bindEnvironment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22134897/