JavaScript:从外部函数更新值

时间:2014-06-01 19:43:07

标签: javascript facebook-graph-api

我知道这是星期天的晚上,你们中的大多数人都会有更好的想法,但是我的一个伙伴一直在问我要求分析“派对的人”#34;谁参加他的活动......

作为申请的一部分,他向我询问了某些"女孩百分比"营销计算器;)

由于Facebook通过Graph API提供对用户数据的访问,我使用此代码检索1000个用户的性别以计算百分比。

function getGender(userID) {
    var userGender = "";
    FB.api(
        '/' + userID,
        function (response) {
            if (response && !response.error) {
                userGender = response.gender;
                console.log(userGender);
            }
        }
    );
    return userGender;
}

但JS函数不返回任何值,除了空字符串... 那么如何让JS正确分配值?

1 个答案:

答案 0 :(得分:0)

问题是,你打电话给Facebook API。您的回复是异步的,在返回功能后不存在。函数的第二个参数是回调 - 你的函数应该在回调或返回promises中执行所有操作(在本例中,使用Q库):

var deferred = Q.defer();

    FB.api('/'+userID, function(response)
    {
     deferred.resolve(response) 
    });

    return deferred.promise;

关于此主题的好幻灯片: http://www.slideshare.net/async_io/javascript-promisesq-library-17206726