for文内でのREST API(GET)の記述について

for文内でGETをしているのですが、動作が思うように行きません。

Aアプリのサブテーブルレコード(max50件)をfor文にて、1レコードずつBアプリを検索(GET)し、該当データが存在すれば、Bアプリの該当レコードに更新します。

GET後、存在チェックを行い、function_PUTへ飛ばしたいのですが、
デバッグすると、①をレコード数分実行し、その間②はスキップされます。その後、forが終了してから、②をレコード数分実行しています。
当然、引き渡したい配列の添字i はfor文の抜けた数字となっているため、配列が該当せずがエラーとなります。

同じような質問も見受けられたのですが、この方法ではできない or イベント処理内では可能等、と回答にバラつきがありましたので、質問させていただきました。
for文は、kintone.events.onのプロセス管理の変更イベント内で記載しています。


for (var i = 0; i < length; i++) {

    var Query = “コード = "” + event.record[i].value[“コード”].value + “"” ; -①

    var GET_param = {‘app’: AppId,‘query’: Query};

    kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’, GET_param).then(function(resp) {

        //GET成功時 -②
        if (resp.records.length > 0) {
            // レコード存在時には別関数にて「PUT」する
            function_PUT(event, i, resp);
        } else {
            //該当データなし
            console.log(resp.message);
           return event;
        }
    },function(resp) {
        //GET失敗時
        console.log(resp.message);
        return event;
    });
}

JavaScriptにおける非同期処理を繰り返し(順次)実行するには、Promiseとreduceを使ってやる必要があります。同様の内容がこの辺で触れられており本質は同じなので参考にトライされるとよろしいかと思います。