OKAと申します。
ユーザー毎にレコードを一括削除した後、レコードを一括登録する処理を行いたいのですが、create.submit時に完全に処理が終わる前に画面が更新されてしまいます。
下記のように記述しているのですが、不備な点がありましたらご指摘いただけますと幸いです。
よろしくお願いいたします。
array_ids.lengthには削除したいレコードのIDをユーザー毎に配列に格納しています。
array_ids.length = [{1 ,2 ,3}, {4 ,5 ,6 }, {7 ,8 ,9 }, {10 ,11 ,12 }]のようなイメージです。
return new kintone.Promise(function(resolve, reject) {
if(array_ids.length == 0) {
resolve(event);
} else {
new kintone.Promise(function(resolve1, reject1) {
function loop(l) {
return new kintone.Promise(function(resolve2, reject2) {
var param = {
‘app’: APP_NO, // アプリID
‘ids’: array_ids[l] // レコードID
};
kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘DELETE’, param, function(resp) {
// success
resolve2(l + 1);
}, function(error) {
// error
resolve2(l + 1);
});
}).then(function(count) {
// ループを抜けるかどうかの判定
if(count == array_ids.length) {
// 抜ける(外側のPromiseのresolve判定を実行
resolve1();
} else {
// 再帰的に実行
loop(count);
}
});
}
// 初回実行
loop(0);
}).then(function() {
// ループ処理が終わったらここにくる
console.log(‘delete finish’);
resolve(event);
});
}
}).then(function(resp) {
var array_records = new Array();
for(var i = 0; i < record[‘氏名’][‘value’].length; i++) {
var array_record = new Array();
var vUser = record[‘氏名’][‘value’][i][‘code’];
// 新規の非稼働日報レコード作成
for(var k = 0; k < vDates.length; k++) {
// 日報作成パラメータ設定
var arr = { } // 省略
array_record.push(arr);
}
array_records.push(array_record);
}
new kintone.Promise(function(resolve1, reject1) {
function loop(l) {
return new kintone.Promise(function(resolve2, reject2) {
var param = {
“app”: APP_NO,
“records”: array_records[l]
};
// kintone REST API(POST)
kintone.api(
kintone.api.url(‘/k/v1/records’, true), // - pathOrUrl
‘POST’, // - method
param, // - params
function(resp) { // - callback
resolve2(l + 1);
},
function(error) { // - errback
resolve2(l + 1);
}
);
}).then(function(count) {
// ループを抜けるかどうかの判定
if(count == array_records.length) {
// 抜ける(外側のPromiseのresolve判定を実行
resolve1();
} else {
// 再帰的に実行
loop(count);
}
});
}
// 初回実行
loop(0);
}).then(function() {
// ループ処理が終わったらここにくる
console.log(‘create finish’);
resolve(event);
});
}).then(function(resp) {
alert(‘処理が終了しました’);
});