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