加载模板视图后,客户端会向服务器执行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}}
答案 0 :(得分:1)
通常情况下,您不会在&返回你得到的东西/除非它的咖啡脚本。
client.zrevrangeSync = Meteor._wrapAsync(client.zrevrange.bind(client));
return client.zrevrangeSync(['players:' + playerId, 0, 3, 'WITHSCORES']);