新規投稿
フォローする

javascript共通処理の同期

お世話になります。

javascriptで共通処理を切り出すと関数の戻り値として値が取得出来ません。

同期処理の問題だと思うのですが、よくわからないのでどなたかご教示

いただけないでしょうか。

//呼び出し元(staff.js)

var body = {
"app":2 ,query
};

alert('start get office');
var o_names = window.commonLib.getOfficeName(body);
console.log(o_names); //ここでPromise {<pending>}が出ます。
alert('end get office');

//共通処理(common.js)

function getOfficeName(body){
var ret = '';
return new kintone.Promise(function(resolve,reject){
kintone.api(
kintone.api.url('/k/v1/records',true)
,'GET'
,body
,function(resp){
alert('a');
if(resp.records.length == 1){
console.log(resp);
ret = resp;
}else{
alert('何かおかしい');
}
}
,function(error){
alert('error');
});

}).then(function(res){
ret = res;
return event;
}).catch(function(error){
alert('catch');
return event;
})
}

start->a->endの順にアラートが出て欲しいのですが

start->end->aの順にアラートが出ます。他のアラートは出ません。

わかり辛くて申し訳ありませんがよろしくお願いします。

0

5件のコメント

Avatar
村濱一樹
console.log(o_names); //ここでPromise {<pending>}が出ます。

 

ということは、o_namesはちゃんとPromiseObjectになってますので、下記のようにthenで待つ必要がありますね〜

 

o_names.then(function(name) {
  console.log(name);

  alert('end');
});
0
Avatar
村濱一樹
0
Avatar
玉木善朗

出来ました!ありがとうございました!

0
Avatar
玉木善朗

申し訳ありません、回答で書いていただいたthenの中の処理が行われてなかったです。

0
Avatar
玉木善朗

大変申し訳ありません。自己解決しました。共通処理側で何か問題があったようでした。

0
ログインしてコメントを残してください。