Ribbit.work

kintone.events.onで非同期処理(async/await)を使う - kintone

KintoneJavaScript

last modified date2021-12-3

publish date2021-7-6

こんにちはリビットです。

今回はJavaScriptカスタマイズを行う上でよく利用する非同期処理を実装する方法と、実装する上での注意点を紹介します。

この記事の目次

実装方法

// 重たい処理
const heavyProcess = () => {
  return new Promise((resolve) =>
    setTimeout(() => resolve("1秒かかる処理が完了しました"), 1000)
  );
};

// 無名関数で実装
kintone.events.on(["app.record.index.show"], async (event) => {
  const result = await heavyProcess();
  console.log(result);
  return event;
});

// 関数を用意したうえで実装
async function handler(event) {
  const result = await heavyProcess();
  console.log(result);
  return event;
}

kintone.events.on(["app.record.create.show"], handler);

注意点

kintone.events.onに登録した関数は引数として受け取ったeventを最終的にreturnします。

kintone.events.on(["app.record.print.show"], (event) => {
  // 借りたらちゃんと返す
  return event;
});

この関数を非同期にするということは、返却される値がeventからPromise<event>になるということです。

kintone.events.on(["app.record.print.show"], async (event) => {
  // 返却されるのはeventそのものではなく、Promiseにラップされたオブジェクト
  return event;
});

Kintoneはこれを想定していて、Developer Networkのほとんどのイベントで以下のように記述があります。

kintone.Promiseオブジェクトをreturnすると、非同期処理の完了を待って次の処理を開始します。

ただいくつか例外があり、app.record.create.show、app.record.edit.show、app.record.detail.showの3つは動作が保証されず、app.record.edit.change, app.record.create.changeではエラーが出ます。

上記の例外全てについて、確認する限り全く動かないということはありませんでしたが、正常に動作しない可能性があるので注意してください。

この記事をシェア

この記事を読んだ方におすすめの記事

kuromoji.jsで形態素解析
2021-12-4

kuromoji.jsで形態素解析

TypeScriptJavaScript
レコードのサブテーブルを並び替えて登録する【Kintone JavaScriptカスタマイズ】
2021-12-4

レコードのサブテーブルを並び替えて登録する【Kintone JavaScriptカスタマイズ】

JavaScriptKintone
レコード一覧表示時(app.record.index.show)のサンプルコード集【Kintone】
2021-11-29

レコード一覧表示時(app.record.index.show)のサンプルコード集【Kintone】

JavaScriptKintone
スライダーを使って数値を設定できるKintoneプラグイン【無料公開】
2021-11-26

スライダーを使って数値を設定できるKintoneプラグイン【無料公開】

KintoneJavaScriptTypeScript

最新の記事

kuromoji.jsで形態素解析
2021-12-4

kuromoji.jsで形態素解析

TypeScriptJavaScript
レコードのサブテーブルを並び替えて登録する【Kintone JavaScriptカスタマイズ】
2021-12-4

レコードのサブテーブルを並び替えて登録する【Kintone JavaScriptカスタマイズ】

JavaScriptKintone
レコード一覧表示時(app.record.index.show)のサンプルコード集【Kintone】
2021-11-29

レコード一覧表示時(app.record.index.show)のサンプルコード集【Kintone】

JavaScriptKintone
スライダーを使って数値を設定できるKintoneプラグイン【無料公開】
2021-11-26

スライダーを使って数値を設定できるKintoneプラグイン【無料公開】

KintoneJavaScriptTypeScript