jQuery Deferred + google APIs
非同期処理を同期的に実行のメモ(改)
- 認証
- google APIsのロード
- APIの使用
を逐次実行。
gapi.js
function prms_gapi_auth(){
var df = $.Deferred();
gapi.auth.authorize(
{client_id: constants.gapi.client_id, scope: 'https://www.googleapis.com/auth/drive', immediate: true}, function(res){
if(!gapi.auth || !gapi.auth.getToken()){
df.reject("gapi.auth not exists");
}
for(var i=0;i<10000;i++){
var s = "aaaa";
s+="bbbbb";
}
console.log("auth success");
df.resolve(res);
}
);
return df.promise();
}
function prms_gapi_load_by(api,v){
var df = $.Deferred();
gapi.client.setApiKey(constants.gapi.api_key);
gapi.client.load(api, v, function(){
console.log("load success:" + api);
df.resolve("loaded:" + api);
});
return df.promise();
}
/*
* google drive file list( filter:folder id )
*/
function list_files_with(cond){
var df = $.Deferred();
var initialRequest = gapi.client.drive.files.list(
{q:"'0B3pnnGKgIx1uWlZrY3RiTHBHcTA' in parents"}
);
initialRequest.execute(function(resp){
var cache = {};
console.log(resp.items);
$(resp.items).each(function(ix,v){
cache[v.id] = v;
});
console.log(cache);
df.resolve(cache);
});
return df.promise();
}
/**
* google drive sdk (create folder sample)
*/
function createFolder(folderName){
var body = {
'title': folderName,
'mimeType': "application/vnd.google-apps.folder"
};
var request = gapi.client.drive.files.insert({
'resource': body
});
request.execute(function(resp) {
console.log('Folder ID: ' + resp.id);
});
}
function load_APIs(){
prms_gapi_auth().done(function(res){
console.log("auth callback");
$.when(prms_gapi_load_by("drive","v2")).then(function(data){
//事前条件: authorize が完了
console.log(data);
})
});
}
Author And Source
この問題について(jQuery Deferred + google APIs), 我々は、より多くの情報をここで見つけました https://qiita.com/anyworks/items/79f6e8c0784610143faf著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .