这是我在服务器上的方法:
Meteor.methods({
dotest: function (ruleid) {
console.log('Do test called with argument : %s', ruleid)
var socket = zmq.socket('req')
socket.connect('tcp://localhost:5555')
socket.send(ruleid)
socket.on('message', function(data) {
console.log('Reply: ' + data);
return data
})
}
})
当然,它不起作用,因为“返回”在dotest方法结束后触发。 我该如何解决这个问题?
答案 0 :(得分:1)
可以使用Futures
!
Meteor.methods({
dotest: function (ruleid) {
var Future = Npm.require("fibers/future");
var fut = new Future();
console.log('Do test called with argument : %s', ruleid);
var socket = zmq.socket('req');
socket.connect('tcp://localhost:5555');
socket.send(ruleid);
socket.on('message', function(data) {
console.log('Reply: ' + data);
fut['return'](data);
});
return fut.wait();
}
});
我没有对此进行测试,但它应该可行。快乐的编码。