お世話になります。
kintoneのカスタマイズを行っているのですが、edit.showイベントでの処理が思うようにいかない状態です。
作成している処理は以下の通りです。
・アプリ内のJS、プラグイン内のJSにapp.record.edit.showイベントがあります。
・それぞれのJSはapp.record.edit.showイベント内でkintone.apiを使用し、別アプリの情報を取得する処理を実行します。
・アプリ内のJSでkintone.apiでの情報取得が失敗した場合、エラーメッセージを表示。
レコード編集をキャンセルし、レコード詳細画面に戻す(kintone標準の[キャンセル]ボタンを動的クリックすることを想定しています)
現状、アプリ内のJSでエラーが発生し、レコード詳細画面に戻った場合でも、
プラグイン内のJSにあるapp.record.edit.showイベントが動いてしまっています。
アプリ内のJSにあるkintone.apiの処理がおわるまで、プラグイン側のJSの処理を待たせたいと考えているのですが、
どのように実装すればよいでしょうか?
ご教示の程、宜しくお願いいたします。
yf様
お世話になっております。
トヨクモの江田と申します。
アプリ内のJSの処理をPromiseで囲って,プラグイン内のJSの処理はPromiseの解決時の処理とすればよいと思います.
・アプリ内のJS
window.api = function(){
return new kintone.Promise(function(resolve, reject) {
kintone.events.on([
'app.record.edit.show',
], function(event){
kintone.api(kintone.api.url('/k/v1/records', true), 'GET', {
app: kintone.app.getId(),
}).then(function(response){
resolve(response);
}).catch(function(error){
reject(error);
});
});
});
}
・プラグイン内のJS
window.api().then(function(response){
console.log(response);
}).catch(function(error){
console.log(error);
});