app.record.edit.showイベントが複数ある場合の同期処理について

お世話になります。

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);
});