サブテーブルの並べ替えについて

サブテーブルを常駐フラグ+技術者CDでソーティングしようと思っています。

最後まで実行された後に、サブテーブル内のフィールド表示がチカチカ入れ替わり、ループした状態になります。

原因が分からないのですが、どなたかお分かりにならないでしょうか。よろしくお願いします。

function sortAngineerCD(dispatchTable) {
// console.log(dispatchTable);
// 常駐+技術者CD順にソートする
dispatchTable.sort(function(a, b) {
// console.log(a.value.常駐.value);
let keyA = a.value.常駐.value;
if (keyA) {
keyA = keyA + a.value.技術者CD.value;
} else {
keyA = keyA + "A" + a.value.技術者CD.value;
}
// window.alert("keyA:" + keyA);
// console.log("keyA:" + keyA);
let keyB = b.value.常駐.value;
if (keyB) {
keyB = keyB + b.value.技術者CD.value;
} else {
keyB = keyB + "A" + b.value.技術者CD.value;
}
// window.alert("keyB:" + keyB);
// console.log("keyB:" + keyB);
if (keyA < keyB) {
return -1;
} else if (keyA > keyB) {
return 1;
} else {
return 0;
}
});
// window.alert("完了");
// console.log(dispatchTable);
return;
}

ちなみに、このコーディングは、edit.showで入れています。

よろしくお願いします。

原因が分かりました。

sortingFlgで他のフィールドに変更がかかってもchangeセクションが起動しないようにしていたのですが、その制御がうまくいってなかったようです。

sortingの前に、sortingFlg = 1 にして置き、sorting後に、sortingFlg = 0 に戻すようにしていましたが、Promiseが機能していないようです。

Promiseには手こずっていますが、何とかやってみます。

sortingFlg = 1;
sortAngineerCD(dispatchTable);
new kintone.Promise(function (resolve) {
// console.log("sortingFlg1:" + sortingFlg);
resolve(sortAngineerCD(dispatchTable));
}).then(function(resolve) {
sortingFlg = 0;
// console.log("sortingFlg2:" + sortingFlg);
});