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

**URL:** <https://community.cybozu.dev/t/topic/4419>\
**Category:** kintone 開発相談\
**Created:** [2019 年 9 月 30 日午前 6:36 UTC](https://community.cybozu.dev/t/topic/4419 "2019-09-30T06:36:41Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account737](https://avatars.discourse-cdn.com/v4/letter/l/3bc359/32.png) [@Legacy\_Account737](https://community.cybozu.dev/u/Legacy_Account737)\
**Post date:** [2019 年 9 月 30 日午前 6:36 UTC](https://community.cybozu.dev/t/topic/4419/1 "2019-09-30T06:36:41Z")

</div>

お世話になります。

kintoneのカスタマイズを行っているのですが、edit.showイベントでの処理が思うようにいかない状態です。

作成している処理は以下の通りです。

・アプリ内のJS、プラグイン内のJSにapp.record.edit.showイベントがあります。

・それぞれのJSはapp.record.edit.showイベント内でkintone.apiを使用し、別アプリの情報を取得する処理を実行します。

・アプリ内のJSでkintone.apiでの情報取得が失敗した場合、エラーメッセージを表示。

レコード編集をキャンセルし、レコード詳細画面に戻す（kintone標準の[キャンセル]ボタンを動的クリックすることを想定しています）

&nbsp;

現状、アプリ内のJSでエラーが発生し、レコード詳細画面に戻った場合でも、  
プラグイン内のJSにあるapp.record.edit.showイベントが動いてしまっています。

アプリ内のJSにあるkintone.apiの処理がおわるまで、プラグイン側のJSの処理を待たせたいと考えているのですが、

どのように実装すればよいでしょうか？

&nbsp;

ご教示の程、宜しくお願いいたします。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1740](https://avatars.discourse-cdn.com/v4/letter/l/ed8c4c/32.png) [@Legacy\_Account1740](https://community.cybozu.dev/u/Legacy_Account1740)\
**Post date:** [2019 年 10 月 2 日午前 3:14 UTC](https://community.cybozu.dev/t/topic/4419/2 "2019-10-02T03:14:51Z")

</div>

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

```
