kintoneでPromiseを使い方を簡単に説明します!
kintoneでPromiseを使う時に一番オーソドックスなのが、レコード登録時に何かしらの処理をするケースだと思います。
例えば、下記コードはコールバックの実行される前にイベント処理が終了してしまいますが、kintone.Promiseを使ってコールバックの処理が実行されるようにする方法を説明します。
kintone.events.on('app.record.create.submit', function(event){ kintone.api(kintone.api.url('/k/v1/records', true), 'GET', kintone.app.getId(),function(resp) { //成功時の処理 }, function(err){ //エラー時の処理 } });
まず重要な知識として、kintone REST APIによってGETやPOSTなどの処理実行時にkintone上で自動的にPromiseオブジェクトが生成されます。
しかし、コールバック関数にはPromiseオブジェクトが生成されていません。
なので、GETやPOSTなどの処理は実行はされるのに、コールバック関数が実行されずにイベント処理が終了してしまいます。
対処法は、まずはコールバック関数をthenで繋ぎます。thenで繋ぐことによってコールバック関数にもPromiseオブジェクトが生成されます。
さらに、kintone REST API をreturnしておかなければイベントが即座に終了してしまいます。
したがって、下記のようになります。
kintone.events.on('app.record.create.submit', function(event){ return kintone.api(kintone.api.url('/k/v1/records', true), 'GET',kintone.app.getId()).then(function(resp) { //成功時の処理 }).catch(function(err){ //エラー時の処理 }); }); });
注意点をおさらいしておきます。
①kintone REST APIは自動的にPromiseオブジェクトを作っている。
②thenによってコールバックを繋いでおく。
③Promiseをreturnする。
イメージとしては、Promiseオブジェクトをreturnしている限りイベント処理が勝手に終わることはないという感じです。
今回は非同期処理を一つ実行する例でしたが、さらに多くの処理を実行するにはthenを使ってさらに繋げることができます。
ちなみに、二つの別々の処理が終わるまで待つという書き方もできるのでPromiseに慣れてきた時にチャレンジすると良いかもしれませんね!