kintone API で Promise を使ってみよう!
を参考にレコード保存時にPromiseで別レコード取得して色々と処理をするコードを書きました。
そのコードを実行すると成功したり、失敗したりと挙動が不安定です。
成功・失敗時に条件は何も変えておりません。ただ保存ボタンを押しただけです。
原因調査のため下記の単純なコードに変更して実行したところ、
同じように成功したり失敗したりします。
(function() {
“use strict”;
var AppId = 11; //アプリID
var queryAll = ‘’; //クエリの条件指定なし
/*詳細画面表示イベントハンドラ*/
kintone.events.on([‘app.record.create.submit.success’], function(event) {
getRecords(AppId, queryAll).then(RSuccess).catch(apiRequestError);
getRecords(AppId, queryAll).then(RSuccess).catch(apiRequestError);
getRecords(AppId, queryAll).then(RSuccess).catch(apiRequestError);
getRecords(AppId, queryAll).then(RSuccess).catch(apiRequestError);
getRecords(AppId, queryAll).then(RSuccess).catch(apiRequestError);
getRecords(AppId, queryAll).then(RSuccess).catch(apiRequestError);
getRecords(AppId, queryAll).then(RSuccess).catch(apiRequestError);
getRecords(AppId, queryAll).then(RSuccess).catch(apiRequestError);
});
var RSuccess = function(rLog) {
console.log(‘RSuccess’);
console.log(rLog);
};
var apiRequestError = function(error) {
/* API失敗時の処理 */
console.log(‘API失敗’);
console.log(error);
//エラーメッセージ表示
alert('エラーが発生しました ’ + error);
};
//500件ずつ取得処理
function getRecords(appId, optQuery, optRecords, optOffset) {
var offset = optOffset || 0;
var limit = 500;
var allRecords = optRecords || [];
var reqParam = {
app: appId,
query: optQuery + ’ limit ’ + limit + ’ offset ’ + offset
};
console.log(reqParam);
return kintone.api(‘/k/v1/records’, ‘GET’, reqParam).then(function(resp) {
allRecords = allRecords.concat(resp.records);
if (resp.records.length === limit) {
return getRecords(appId, optQuery, allRecords, offset + limit);
}
return allRecords;
});
}
})();
promiseのレコード取得を何度も呼び出すコードです。
全部成功する場合と、4番目の呼び出しで失敗する場合があります。
console.log(error);でエラー内容を確認しようと思ったのですが、何も出力されません。
同じような現象に遭遇した方はいらっしゃいますでしょうか。
コードの記載方法で何か問題があるようであればご指摘いただきたいです。