当我尝试使用sleep进行循环时出现此错误
错误:Meteor代码必须始终在光纤内运行。尝试使用Meteor.bindEnvironment包装传递给非Meteor库的回调。
我的代码:
var sockjs = require('sockjs');
var http = require('http');
var sockjsServer = sockjs.createServer({
sockjs_url: '//d1fxtkz8shb9d2.cloudfront.net/sockjs-0.3.min.js'
});
sockjsServer.on('connection', function(conn) {
console.log('on connection');
conn.on('data', function(msg) {
console.log('\nRECV:'+msg);
});
});
var server = http.createServer();
sockjsServer.installHandlers(server, {prefix:'/hello'});
server.listen(8888, '0.0.0.0');
在同一档案中
fs.readdir(directory, (err, files) => {
if (err) {
console.log("error get file");
}
if(files.length > 0) {
for (var i = 0; i <files.length; i++) {
Fiber(function()
{
setTimeout( function()
{
Meteor.call('mymethodfile', files[i]);
}, 1000 );
}).run();
}
}
});
请帮帮我
答案 0 :(得分:0)
如果你想包装一个异步函数,你应该使用Meteor async wrap
方法或meteorhacks:async
包,你可以在这里看到相关答案:Meteor: Proper use of Meteor.wrapAsync on server
如果您想使用setTimeout,则必须使用Meteor.setTimeout
方法:https://docs.meteor.com/api/timers.html