OpenSocialアプリを作成する際、JavaScriptのロジックで
例えば自分の情報と友達の情報を取得することがでてくるが、
その際、以下のように2つのメソッドを書いていた。
- function getMyInfo(){
- var params = {};
- var req = opensocial.newDataRequest();
- req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.VIEWER,params), "viewer");
- req.send(function(data){
-
- if (data.hadError()) {
- var msg = data.getErrorMessage();
-
- }
- else {
- var item = data.get("viewer");
- if (!item.hadError()) {
- var viewer = item.getData();
- myID = viewer.getId();
- myName = viewer.getDisplayName();
- myURL = viewer.getField(opensocial.Person.Field.THUMBNAIL_URL);
- }
- });
- }
-
- function friendNumCheck(){
- var fparams = {};
- fparams[opensocial.IdSpec.Field.USER_ID] = opensocial.IdSpec.PersonId.VIEWER;
- fparams[opensocial.IdSpec.Field.GROUP_ID] = "FRIENDS";
- var fetchOpt = {};
- fetchOpt[opensocial.DataRequest.PeopleRequestFields.MAX] = 1;
- var idSpec = opensocial.newIdSpec(fparams);
- var req = opensocial.newDataRequest();
- req.add(req.newFetchPeopleRequest(idSpec, fetchOpt), "friends");
-
- req.send(function(data){
- if (data.hadError()) {
- var msg = data.getErrorMessage();
- }
- else {
- var friends = data.get('friends')
- if (!friends.hadError()) {
- var friend = friend.getData();
- friendID = friend.getId();
- friendName = friend.getDisplayName();
- friendURL = friend.getField(opensocial.Person.Field.THUMBNAIL_URL);
- }
- }
- });
- }
function getMyInfo(){
var params = {};
var req = opensocial.newDataRequest();
req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.VIEWER,params), "viewer");
req.send(function(data){
if (data.hadError()) {
var msg = data.getErrorMessage();
// エラー発生時の処理
}
else {
var item = data.get("viewer");
if (!item.hadError()) {
var viewer = item.getData();
myID = viewer.getId();
myName = viewer.getDisplayName();
myURL = viewer.getField(opensocial.Person.Field.THUMBNAIL_URL);
}
});
}
function friendNumCheck(){
var fparams = {};
fparams[opensocial.IdSpec.Field.USER_ID] = opensocial.IdSpec.PersonId.VIEWER;
fparams[opensocial.IdSpec.Field.GROUP_ID] = "FRIENDS";
var fetchOpt = {};
fetchOpt[opensocial.DataRequest.PeopleRequestFields.MAX] = 1;
var idSpec = opensocial.newIdSpec(fparams);
var req = opensocial.newDataRequest();
req.add(req.newFetchPeopleRequest(idSpec, fetchOpt), "friends");
req.send(function(data){
if (data.hadError()) {
var msg = data.getErrorMessage();
}
else {
var friends = data.get('friends')
if (!friends.hadError()) {
var friend = friend.getData();
friendID = friend.getId();
friendName = friend.getDisplayName();
friendURL = friend.getField(opensocial.Person.Field.THUMBNAIL_URL);
}
}
});
}
よくよく考えたら、'viewer','friends'のリクエストをreq.addして一回のreq.send(function(data))とする方がリクエスト回数も少ないし、待つ時間も少なくて済む。
まだまだあまり理解できていないなぁ。。。
- function getInfo(){
- var params = {};
- var req = opensocial.newDataRequest();
- req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.VIEWER,params), "viewer");
-
-
- var fparams = {};
- fparams[opensocial.IdSpec.Field.USER_ID] = opensocial.IdSpec.PersonId.VIEWER;
- fparams[opensocial.IdSpec.Field.GROUP_ID] = "FRIENDS";
- var fetchOpt = {};
- fetchOpt[opensocial.DataRequest.PeopleRequestFields.MAX] = 1;
- var idSpec = opensocial.newIdSpec(fparams);
- var req = opensocial.newDataRequest();
- req.add(req.newFetchPeopleRequest(idSpec, fetchOpt), "friends");
- req.send(function(data){
-
- if (data.hadError()) {
- var msg = data.getErrorMessage();
-
- }
- else {
- var item = data.get("viewer");
- if (!item.hadError()) {
- var viewer = item.getData();
- myID = viewer.getId();
- myName = viewer.getDisplayName();
- myURL = viewer.getField(opensocial.Person.Field.THUMBNAIL_URL);
-
-
- var friends = data.get('friends')
- if (!friends.hadError()) {
- var friend = friend.getData();
- friendID = friend.getId();
- friendName = friend.getDisplayName();
- friendURL = friend.getField(opensocial.Person.Field.THUMBNAIL_URL);
- }
- });
- }
function getInfo(){
var params = {};
var req = opensocial.newDataRequest();
req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.VIEWER,params), "viewer");
var fparams = {};
fparams[opensocial.IdSpec.Field.USER_ID] = opensocial.IdSpec.PersonId.VIEWER;
fparams[opensocial.IdSpec.Field.GROUP_ID] = "FRIENDS";
var fetchOpt = {};
fetchOpt[opensocial.DataRequest.PeopleRequestFields.MAX] = 1;
var idSpec = opensocial.newIdSpec(fparams);
var req = opensocial.newDataRequest();
req.add(req.newFetchPeopleRequest(idSpec, fetchOpt), "friends");
req.send(function(data){
if (data.hadError()) {
var msg = data.getErrorMessage();
// エラー発生時の処理
}
else {
var item = data.get("viewer");
if (!item.hadError()) {
var viewer = item.getData();
myID = viewer.getId();
myName = viewer.getDisplayName();
myURL = viewer.getField(opensocial.Person.Field.THUMBNAIL_URL);
var friends = data.get('friends')
if (!friends.hadError()) {
var friend = friend.getData();
friendID = friend.getId();
friendName = friend.getDisplayName();
friendURL = friend.getField(opensocial.Person.Field.THUMBNAIL_URL);
}
});
}
0 件のコメント:
コメントを投稿