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