appendChildした要素が入れ替わる

ヘッダー部分にアプリのレコードの要素を追加したいと考えており、現在次のようなコードを書いています(簡略化しています)。

var header = kintone.app.record.getHeaderMenuSpaceElement();

var record_id = 対象のレコード番号

while (record_id > 0){
  var record = {
    “app”:対象のアプリ番号,
    “id”: record_id
};

kintone.api(kintone.api.url(‘/k/v1/record’, true), ‘GET’, record, function(element) {

(略)
    header.appendChild(elementから取得した要素);
  });
  record_id–;
}

この時、意図した要素がヘッダーに追加できているのですが、何故か画面を更新するたびにappendChildした値の順番が入れ替わってしまうという状況です。

もし原因がお分かりの方がいらっしゃいましたら、ご教示お願いします。

mmさん

原因は、APIは非同期で処理されているためです。

 

まず、mmさんの実装方法ですとレコードを1件ずつ取得しているため、何度もAPIを飛ばしています。
これはAPIリクエスト上限にひっかりりやすくなったり、処理が重くなったりするので、
1件取得のAPIではなく、一括取得のAPIを使ったほうが良いと思います。

https://developer.cybozu.io/hc/ja/articles/202331474#step2

一括取得したものに対し、ループ処理を実装してみてください。

HANSA様

ありがとうございます!

ご指摘の通り、レコードの一括取得をしてからループ処理を行うことによって改善することができました!