如何从循环中收集Facebook API请求的响应?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从循环中收集Facebook API请求的响应?相关的知识,希望对你有一定的参考价值。

我试图收集在循环中调用的FB API异步请求的结果。我用下一个代码:

    function getPicturesByUserIds(friendsIdList) {
        var userPictures = [];
        for (var i = 0; i < friendsIdList.length; i++) {
            (function () {
                var userId = friendsIdList[i];
                var j = i;
                var friendsIdListLength = friendsIdList.length - 1;
                FB.api('/'+userId+'/picture?type=large', function (responce) {
                    if (responce && !responce.error) {
                        userPictures[userId] = responce.data.url;
                    }
                    if (j >= friendsIdListLength) {
                        console.log(userPictures);
                        sendPicturesAndGetResponse(userPictures);
                    }
                });
            })();
        }
    }

此代码适用于Chrome,但在Firefox数组中,userPictures为空。

答案

您可以使用“递归函数”解决这类问题,或者 - 更好 - 只需使用一个API调用:

/me/friends?fields=name,picture.type(large)

我会计算递归函数到编程的基础知识,你应该熟悉这些。例如:Calling a javascript function recursively

以上是关于如何从循环中收集Facebook API请求的响应?的主要内容,如果未能解决你的问题,请参考以下文章

Facebook API 批量请求很慢

Facebook Graph API - 来自批处理请求的同步响应

如何在接收响应时通过 websocket 发送请求

如何使用 Spring Boot WebClient 收集分页 API 响应?

Facebook API 使用带有多部分表单数据的 HTTP POST 请求的错误响应

我们如何从facebook发送api的用户ID获取Page-scoped-id?