从_.wrapAsync函数返回时,Meteor.call返回undefined

时间:2014-08-24 04:21:34

标签: javascript node.js meteor redis

加载模板视图后,客户端会向服务器执行Meteor.call('getPlayerScore')以获取一些数据。

在服务器上,方法getPlayerScore使用client.zrevrangeSync执行同步函数_.wrapAsync,并在包装​​函数完成运行后返回1234字符串。

问题:为什么客户收到result undefined?如果在调用result之前返回client.zrevrangeSync,则client.zrevrangeSync未定义,但如果从Meteor.methods({ getPlayerScore: function(playerId) { var client = redis.createClient(6379, redisServer) client.zrevrangeSync = Meteor._wrapAsync(client.zrevrange) client.zrevrangeSync(['players:' + playerId, 0, 3, 'WITHSCORES'], function(err, result) { return '1234' }) } }) Template.playerScoreboard.helpers({ playerScore: function () { Meteor.call('getPlayerScore', 1, function (error, result) { console.log('result: ', result) return }); } }) 内返回,则{{1}}未定义。

{{1}}

1 个答案:

答案 0 :(得分:1)

通常情况下,您不会在&返回你得到的东西/除非它的咖啡脚本。

client.zrevrangeSync = Meteor._wrapAsync(client.zrevrange.bind(client));

return client.zrevrangeSync(['players:' + playerId, 0, 3, 'WITHSCORES']);