引き継いだソースなのですが、コンソールに「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を記載しなければならないという
ことで理解できました。
ご親切に教えていただき、ありがとうございました。