garoon.Promiseを使用する

目次

garoon.Promiseを使用する

Garoonのイベントのうち、Promiseに対応しているイベントのハンドラー内では、Promiseオブジェクトをreturnすると、非同期処理の完了を待ってから次の処理を実行できます。

garoon.Promiseとは、Promiseオブジェクトを使ったGaroon JavaScript APIです。
garoon.Promiseを利用すると、Internet Explorer 11などのPromiseに対応していないブラウザーでもPromiseを扱うことができます。
Promiseに対応しているブラウザーでは、garoon.Promiseではなく、ブラウザーのPromiseを使うようにしてください。
Promiseに対応しているブラウザーの詳細は、 MDN Web Docs | ブラウザーの互換性 (External link) を参照してください。

関数

garoon.Promise(executor)

利用できるバージョン

  • クラウド版Garoon
  • パッケージ版Garoonバージョン4.6以降

引数

パラメーター名 型 必須 説明
executor 関数 必須 Promiseオブジェクトに渡す、非同期処理の関数
executorの引数には、次の2つの関数が渡されます。
  • resolve:executor内で、処理に成功したときに呼び出す関数
    resolve関数に渡した値は、thenメソッドの第1引数で受け取ることができます。
  • reject:executor内で、処理に失敗したときに呼び出す関数
    reject関数に渡した値は、thenメソッドの第2引数またはcatchメソッドで受け取ることができます。

thenメソッド、catchメソッドの仕様は MDN Web Docs | Promise (External link) に従います。

戻り値

garoon.Promiseオブジェクト

対応イベント

スケジュール
イベント クラウド版 パッケージ版
予定を登録するときのイベント schedule.event.create.submit 〇 5.0以降
予定の登録に成功したときのイベント schedule.event.create.submit.success 〇 5.9以降
ポップアップウィンドウで予定の登録に成功したときのイベント schedule.event.quick.create.submit.success 〇 5.9以降
予定を変更するときのイベント schedule.event.edit.submit 〇 5.0以降
予定の変更に成功したときのイベント schedule.event.edit.submit.success 〇 5.9以降
ドラッグ&ドロップで予定の変更に成功したときのイベント schedule.event.quick.edit.submit.success 〇 5.9以降
予定の参加に成功したときのイベント schedule.event.attend.submit.success 〇 5.15以降
予定から抜けることに成功したときのイベント schedule.event.leave.submit.success 〇 5.15以降
メール
イベント クラウド版 パッケージ版
メールを送信する前のイベント mail.mail.send.submit 〇 5.5以降
ワークフロー
イベント クラウド版 パッケージ版
ワークフロー申請を提出したときのイベント workflow.request.create.submit.success 〇 5.15以降
ワークフロー申請を承認したときのイベント workflow.request.approve.submit.success 〇 4.10以降
ワークフロー申請を確認したときのイベント workflow.request.acknowledge.submit.success 〇 5.15以降
API実行
API クラウド版 パッケージ版
外部のAPIを実行する garoon.base.proxy.send() 〇 4.6以降
Garoon REST APIリクエストを送信する garoon.api() 〇 5.0以降
kintone連携用トークンを取得する garoon.connect.kintone.getRequestToken() 〇 ×

サンプルコード

Garoon REST APIリクエストを送信するAPI を使ったリクエストの場合
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
const body = {
  id: 1
};

garoon.events.on('schedule.event.create.submit', (event) => {
  return new garoon.Promise((resolve, reject) => {
    garoon.api(garoon.api.url('/api/v1/schedule/events/1', 'GET', body).then((resp) => {
      const scheduleEvent = event.event;
      scheduleEvent.subject = 'sample_schedule';
      resolve(event);
    }));
  });
});
Garoon REST APIリクエストを送信するAPI を使わないリクエストの場合
1
2
3
4
5
6
7
8
9
garoon.events.on('schedule.event.create.submit', (event) => {
  return new garoon.Promise((resolve, reject) => {
    setTimeout(() => {
      const scheduleEvent = event.event;
      scheduleEvent.subject = 'sample_schedule';
      resolve(event);
    }, 10000);
  });
});

公式コミュニティ

kintone開発者同士で質問や知見を共有し、学び合うことができます。