javascript——我应该请求一大团数据还是一系列较小的ajax请求? 简介
我正在尝试运行一个登录到facebook的方法。登录的成功回调请求当前用户的id、他们的事件、他们的朋友列表,然后运行朋友列表,请求每个朋友的事件,并将每个朋友的事件列表与当前用户的事件进行比较 我之所以要运行这么多单独的请求,是因为分解它似乎更有效,这样我就不会一下子得到这么大的数据块而阻塞我的应用程序。现在我不太确定 问题 我想得到一些建议,关于我是否应该只发出一个大型ajax请求来获取所有数据,或者是否应该将其分解为较小的调用 如果我把它分成几个小的电话,我能得到一些最好的建议吗?例如,我是否应该将它们作为回调链接到彼此 看来前进的道路是: 1.获取用户的idjavascript——我应该请求一大团数据还是一系列较小的ajax请求? 简介,javascript,ajax,Javascript,Ajax,我正在尝试运行一个登录到facebook的方法。登录的成功回调请求当前用户的id、他们的事件、他们的朋友列表,然后运行朋友列表,请求每个朋友的事件,并将每个朋友的事件列表与当前用户的事件进行比较 我之所以要运行这么多单独的请求,是因为分解它似乎更有效,这样我就不会一下子得到这么大的数据块而阻塞我的应用程序。现在我不太确定 问题 我想得到一些建议,关于我是否应该只发出一个大型ajax请求来获取所有数据,或者是否应该将其分解为较小的调用 如果我把它分成几个小的电话,我能得到一些最好的建议吗?例如,我
函数collectFriendsRankedByCommonEvents(){
粘虫变种;
var eventComparisonData=[];
var-myData;
var myFriendsList;
//使用userEvents、Friendslist和friend's events的权限登录
FB.登录(功能(响应){
如果(response.status==“已连接”){
api('/me',函数(response){myId=response['id']});
api((myId+'?fields=id,events'),'GET',函数(response){myData=response})
api((myId+'?fields=id,friends'),'GET',函数(response){myFriendsList=response})
对于(i=0;i
在大多数情况下,您最好尽可能少地执行HTTP请求。在任何应用程序中,HTTP请求都是昂贵的,而且是最薄弱的故障点(考虑网络连接波动的移动环境),因此,如果可以的话,只需在一个请求中执行所有操作。它还可以使您的代码更易于维护,因为它避免了回调链接
除非您收到的是多兆字节的响应,否则这不会影响性能。如果您发现解析响应确实需要时间,可以使用Web Worker;这会将解析任务移到后台,释放主线程,以便在处理过程中显示反馈。我的请求似乎太大,正在重新处理中受facebook的api影响。也就是说,当我只请求朋友列表时,请求通过。但是,当我请求他们的活动时,我也会收到一个未知错误。如果我一次只请求一个活动,我不会收到错误。作为SO的资深成员,你认为我应该编辑此问题以针对facebook示例还是公开一个新问题?我很感谢你的建议!嗯,我喜欢Facebook的未知错误。如果你找不到任何相关的错误,你可能应该为这个特定的错误提出一个新问题(也许可以查看)
function collectFriendsRankedByCommonEvents(){
var myId;
var eventComparisonData = [];
var myData;
var myFriendsList;
//login with permission to userEvents, Friendslist and friend's events
FB.login(function(response){
if(response.status == 'connected'){
FB.api('/me', function(response) { myId = response['id'] });
FB.api((myId + '?fields=id,events'), 'GET', function(response){ myData = response })
FB.api((myId + '?fields=id,friends'), 'GET', function(response){ myFriendsList = response })
for(i=0; i < myFriendsList.length; i++){
var thisFriendId = myFriendsList[i]
var thisFriendData; //call to API to request friend's event data
var comparisonWithThisFriend = compareFriendEventsWithMe(myData, thisFriendData);
}
eventComparisonData.push(comparisonWithThisFriend);
} else { console.log('couldn\'t connect to facebook') }
},
{scope: 'user_friends, friends_events'}
);
//to iterative rendering method
}