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