【发布时间】:2014-08-25 02:41:38
【问题描述】:
加载模板视图时,客户端向服务器发送Meteor.call('getPlayerScore') 以获取一些数据。
在服务器上,方法getPlayerScore 使用_.wrapAsync 执行一个同步函数client.zrevrangeSync,并在包装函数完成运行后返回1234 字符串。
问题: 为什么客户端收到result 为undefined?如果在调用client.zrevrangeSync 之前返回result,则它不是未定义的,但如果从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
});
}
})
【问题讨论】:
-
我不是 100% 知道
_wrapAsync例程是如何工作的,但是方法本身不需要返回一些东西吗?
标签: javascript node.js meteor redis