Meteor - onCreateUser Ajax回调

时间:2013-12-01 21:10:12

标签: javascript ajax callback meteor

在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的一部分,我不确定返回从请求中提取的数据的最佳选择。提前谢谢。

1 个答案:

答案 0 :(得分:1)

将您的呼叫包装成异步包装器(将其转换为同步功能)。

请注意,仅当回调类似于function(err, data)时才有效。

在上面的代码中,您使用了function(data)。我不太确定任何这样做的Twitter apis。如果你可以检查它实际上是function(err,data),如果没有,我会尝试用其他东西编辑答案

var getUserInfo = Meteor._wrapAsync(Twitter.get.userinfo.bind(Twitter.get));

user.profile = getUserInfo({screen_name: 'username'});

那么Meteor._wrapAsync所做的是你需要给它的功能,并使它在服务器端同步。只要在回调中返回结果,就会返回第二个参数(数据)。

如果返回第一个参数err,则会将其作为错误抛出。