gpt4 book ai didi

javascript - Angular Facebook 服务达到 API 调用限制

转载 作者:行者123 更新时间:2023-12-03 10:16:23 24 4
gpt4 key购买 nike

我试图在 ng-repeat 内调用我的 Facebook 服务,但不知何故 Facebook API 调用限制很快就达到了。

我有这样的服务:

angular.module('core').factory('Facebook', ['$q',
function ($q) {
return {
getMutualFriends: function (fbUserId) {
var deferred = $q.defer();

var path = "/" + fbUserId;

FB.api(
path,
{
'fields': 'context.fields(mutual_friends)'
},
function (response) {
if (!response || response.error) {
deferred.reject('Error occured');
} else {
deferred.resolve(response);
}
}
);
return deferred.promise;
}
};
}
]);

在我的 Controller 中,我有一个调用服务的函数:

$scope.getMutualFriendsCount = function (fbUserId) {
if (fbUserId === '' || fbUserId === undefined) return 0;

Facebook.getMutualFriends(fbUserId)
.then(function (response) {
// untested response
return response.context['mutual_friends']['summary']['total_count'];
});
}

在我的模板中,我有 data-ng-repeat="profile inprofiles" 并且对于每个配置文件,我尝试绑定(bind)结果 data-ng-bind=getMutualFriends(profile .fbId).

该服务设法与 FB 服务器进行通信,直到我开始注意到循环期间有太多调用,并且很快就达到了调用限制(在我的开发计算机上仅在 20 个配置文件页面上进行 1 或 2 次刷新) )。有谁知道我如何更好地设计为多个 ID 获取共同好友的方法?

最佳答案

您不应该调用从监视表达式发出 HTTP 请求的函数,无论是 ng-bind 还是等效的 {{ }}。此表达式以及后续的 HTTP 调用将在每个摘要周期中调用 - 显然不是您所期望或需要的。

相反,获取所需的数据并将其存储在每个配置文件中,然后从ng-repeat中访问该值。

此外,根据上面的评论,您应该考虑批量调用 Facebook。创建一个单独的服务来处理所有这些复杂性并向 Controller 公开一个简单的 API。

关于javascript - Angular Facebook 服务达到 API 调用限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29852970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com