プラグイン作成時(async)のイベントハンドラー登録エラー

引き継いだソースなのですが、コンソールに「kintone.events.onによるapp.record.detail.showの登録は、同期的に行ってください。」と出力されています。
ボタンを表示したいのですが、表示されたりされなかったりしてしまいます。
await部分をコメントアウトするとワーニング出なくなります。

https://developer.cybozu.io/hc/ja/articles/360000882123-%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%83%8F%E3%83%B3%E3%83%89%E3%83%A9%E3%83%BC%E7%99%BB%E9%8C%B2%E3%81%AE%E9%81%A9%E5%88%87%E3%81%AA%E3%82%BF%E3%82%A4%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6#event

上記記事を読みましたが、async/awaitを利用した場合の読み替えができず。
対処方法を教えていただきたくお願い致します。
以下のような構成になっています。

(async (PLUGIN_ID, $)=> {
 
 let conf = kintone.plugin.app.getConfig(PLUGIN_ID);
 const a = await functionA(conf.license_key, PLUGIN_ID);

 // 詳細画面
 kintone.events.on(['app.record.detail.show'], (event) => {
  if (conf.btnuse === 'TRUE') {
   createButton();
  }
 });

})(kintone.$PLUGIN_ID, jQuery);

 

functionAがどういう処理で、const aが何に使われているのかで対処方法が変わってくるかと思います。

提示されている範囲だけだとaは特に使われていないので、単純に即時関数をわければよさそうな気もします。

((PLUGIN_ID, $) => {

  let conf = kintone.plugin.app.getConfig(PLUGIN_ID);

  // 詳細画面
  kintone.events.on(['app.record.detail.show'], (event) => {
    if (conf.btnuse === 'TRUE') {
      createButton();
    }
  });
})(kintone.$PLUGIN_ID, jQuery);

(async (PLUGIN_ID, $) => {

  let conf = kintone.plugin.app.getConfig(PLUGIN_ID);
  const a = await functionA(conf.license_key, PLUGIN_ID);

})(kintone.$PLUGIN_ID, jQuery);

 

PV様
ありがとうございます。

後だしですいません。

functionAはプラグインライセンスのチェック関数ですので、返値aを判定し、
エラーの場合はreturnして、以降の処理を走らないようにしたいです。

  const a =await functionA(conf.license_key, PLUGIN_ID);

  if (a ) {

    swal('ライセンスエラー', a , 'warning');

    return;

  }

対処方法の案としては、こんな感じで非同期処理を待ってから、判定・ボタン作成をするとかでしょうか。

((PLUGIN_ID, $) => {

    let conf = kintone.plugin.app.getConfig(PLUGIN_ID);

    // 詳細画面
    kintone.events.on(['app.record.detail.show'], (event) => {
        functionA(conf.license_key, PLUGIN_ID).then((a) => {
            if (a) {
                swal('ライセンスエラー', a, 'warning');
                return;
            }

            if (conf.btnuse === 'TRUE') {
                createButton();
            }
        });
    });
})(kintone.$PLUGIN_ID, jQuery);

 

度々、ご返信いただき感謝いたします。

event.onの中でライセンスチェックをするということですね。
別のイベント処理が増えた場合は、その都度functionAを記載しなければならないという
ことで理解できました。

ご親切に教えていただき、ありがとうございました。