[英]Meteor - onCreateUser Ajax callback
在Meteor的Accounts.onCreateUser
函数中,我想发出一个ajax请求以从Twitter API获取用户详细信息。 尽管实际的Twitter调用工作正常并且可以检索预期的数据,但由于ajax调用是异步完成的,因此我无法返回此数据。 这是我的位置:
Accounts.onCreateUser(function(options, user) {
user.profile = "";
Twitter.get.userinfo({ screen_name: 'username'}, function(data) {
user.profile = data;
});
return user;
});
由于Accounts.onCraeteUser
是Meteor的一部分,因此我不确定最好的选择是返回从请求中提取的数据。 提前致谢。
将您的调用包装到异步包装器中(该包装器将其转换为同步函数)。
请注意,这仅在回调类似于function(err, data)
。
在上面的代码中,您已经使用过function(data)
。 我不太确定会以这种方式执行此操作的任何Twitter API。 如果您可以检查它实际上是function(err,data)
,否则请尝试用其他方法编辑答案
var getUserInfo = Meteor._wrapAsync(Twitter.get.userinfo.bind(Twitter.get));
user.profile = getUserInfo({screen_name: 'username'});
所以Meteor._wrapAsync
是采用您提供的功能并使它在服务器端同步。 在回调中返回结果后,将立即返回第二个参数(数据)。
如果返回第一个参数err
,它将作为错误抛出。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.