お世話になっております。
1アプリに2000件以上を登録する際の処理時間について質問が御座います。
下記のようなソースで2000件以上を登録する際にbulkRequestを使用して再起処理を行っているのですが「保存」ボタンをクリック後に約1分ほど動かなくなってしまう状態となってしまいます。
10秒とかの待ち時間であれば件数も多いから・・・と納得は出来るのですが1分以上はさすがに長すぎるかなと思っておりロジックの見直しをしています。
2000件以上を繰り返す際には再起処理を実行しているのですが処理時間を減らす案みたいなものがあれがご教示いただけませんでしょうか?
bRequest関数を呼び出すあたりまでの処理時間は大体3秒ほどで終わっていることは確認しています。
//新規追加登録後のイベント
kintone.events.on('app.record.create.submit.success', function (event) {
return new kintone.Promise(function (resolve, reject) {
kintone.api(kintone.api.url('/k/v1/apps', true), 'GET', {}, function (resp) {
//レコード情報の取得
var record = event.record;
//追加するレコードリスト
var newRecords;
//レコード情報の作成
newRecords = createNewRecords(record);
//newRecordsで登録する配列を作成
//(例) [{…}, {…}]
// 0: {TEST: {…}, TESTコード: {…}, 日付: {…}}
// 1: {TEST: {…}, TESTコード: {…}, 日付: {…}}
//...2001: {TEST: {…}, TESTコード: {…}, 日付: {…}}
//bulkRequestで使用するbodyの配列を作成
var bulkLists = bulkCreate(newRecords);
//bodyを作成し、配列化する
//(例) [{…}, {…}]
//0:
// api: "/k/v1/records.json"
// method: "POST"
// payload: {app: 1, records: Array(2)}←Arry(2000)にnewRecordsで作成した2000件が入っています。
//1:
// api: "/k/v1/records.json"
// method: "POST"
// payload: {app: 1, records: Array(1)}
var bResult = bRequest(bulkLists, 0);
if (bResult) {
resolve(bResult);
} else {
return event;
}
}, function (error) {
// error
alert("情報の登録に失敗しました。");
});
}).then(function (resp) {
alert("情報の登録が完了しました。");
return event;
});
});
function bRequest(bodyLists, count) {
return new kintone.Promise(function (resolve, reject) {
kintone.api(kintone.api.url('/k/v1/bulkRequest', true), 'POST', bodyLists[count], function (resp) {
resolve(resp);
}, function (error) {
console.log(error);
return false;
});
}).then(function (resp) {
count++;
//body配列の数がcountと一緒になるまで再起処理を行う
if (bodyLists.length==count) {
return ture;
} else {
bRequest(bodyLists, count);
}
});
}