API送信後の処理を待機したい

 

お世話になっております。

 

APIで複数レコードを送信し、他アプリに新規登録する処理を行っておりますが、

処理が成功した後にalert()で登録が成功した旨を表示したいのですが、

下記コードですと、表示されません。

複数レコードで登録までに時間がかかり、成功した結果が返ってくる前に処理が終了してしまっているのではないかと思っています。

結果が返ってくるまで待機する処理をご教授いただければ幸いです。

 

下記処理の後、

successの処理には通らず、処理が終了します。

 

(function () {

    "use strict";

    kintone.events.on('app.record.create.submit.success', function (event) {

        //宅配日

        var day = event.record.日付_0.value;

        var day2 = event.record.日付_3.value;

        var day3 = event.record.日付_2.value;

        var day4 = event.record.日付_1.value;

        var day5 = event.record.日付_4.value;

        var day6 = event.record.日付_6.value;

        //お客様氏名

        var name = event.record.宅配先氏名.value;

        //希望時間帯

        var time = "なし";

        //宅配メモ

        var memoDeli = event.record.リッチエディター.value;

        //電話番号

        var telNo = event.record.宅配先電話番号_auto.value;

      //カード番号

      var cardNoCus = event.record.カード番号.value;

        //郵便番号

        var postcode = event.record.zipcode2_auto.value;

        //住所2

        var address2 = event.record.建物名_部屋番号_2.value;

        //住所

        var address1 = event.record.address4.value + event.record.address5.value + event.record.address6.value;

        var addressStr = address1.substring(address1.indexOf('県') + 1);

        if (address1.indexOf('市') >= 0) {

            addressStr = address1.substring(address1.indexOf('市') + 1);

        } else if (address1.indexOf('郡') >= 0) {

            addressStr = address1.substring(address1.indexOf('郡') + 1);

        }

        //カレンダーアプリのID

      var appID = XXX;

        // 宅配日が入力されていること

        if (day !== null) {

            var body = {

                "requests": [

                    {

                        "method": "POST",

                        "api": "/k/v1/record.json",

                        "payload": {

                            "app": appID,

                            "record": {

                                "name": {

                                    "value": name

                                }

                                , "day": {

                                    "value": day

                                }

                                , "time": {

                                    "value": time

                                }

                                , "memo": {

                                    "value": memoDeli

                                }

                                , "telNo": {

                                    "value": telNo

                                }

                                , "cardNoCus": {

                                    "value": cardNoCus

                                }

                                , "address1": {

                                    "value": addressStr

                                }

                                , "postcode": {

                                    "value": postcode

                                }

                                , "address2": {

                                    "value": address2

                              }

                            }

                        }

                  },
~省略~

                    {

                        "method": "POST",

                        "api": "/k/v1/record.json",

                        "payload": {

                            "app": appID,

                            "record": {

                                "name": {

                                    "value": name

                                }

                                , "day": {

                                    "value": day6

                                }

                                , "time": {

                                    "value": time

                                }

                                , "memo": {

                                    "value": memoDeli

                                }

                                , "telNo": {

                                    "value": telNo

                                }

                                , "cardNoCus": {

                                    "value": cardNoCus

                                }

                                , "address1": {

                                    "value": addressStr

                                }

                                , "postcode": {

                                    "value": postcode

                                }

                                , "address2": {

                                    "value": address2

                              }

                            }

                        }

                    }

                ]

            };

            kintone.api(kintone.api.url('/k/v1/bulkRequest.json', true), 'POST', body, function (resp) {

                // success

              alert('カレンダーに配達日を登録しました');

            }, function (error) {

                // error

                console.log('失敗');

                console.log(resp);

            });

        }

    });

})();

 

以上、よろしくお願いします。

関石さん

こんにちは。

 

'app.record.create.submit.success’イベントでAPI実行することは、あまりおすすめしません。

追加保存後は画面更新が走るため、今回のようにAPI実行が途中で切れる可能性があります。

 

'app.record.create.submit’イベントでAPI実行し、成功したらそのまま正常終了。

エラーになれば、event.errorで保存処理をキャンセルすることをおすすめします。

 

現在のままですとAPI処理は非同期となり、先に保存処理が通ってしまうため

async/awaitやkintone.Promiseを使って同期処理にすると良いです。

koichi 様

ご教授いただきありがとうございます。

async/awaitを用いて実装することができました。

お勉強になりました。ありがとうございました。