横から失礼します。コードを見た限り、TOさまの指摘通りPromiseを正しくreturnできていないようです。
kintone.api(kintone.api.url('/k/v1/record',true),'PUT', kintbody,(resp) => {
}, (resp) => {
// error:エラーの場合はもう一回やる?検討中
kintone.api(kintone.api.url('/k/v1/record',true),'PUT', kintbody,(resp));
});
resolve(true);
おそらく保存時(submitイベント)で走らせているかと思いますので、その前提で進めます。kintone.Promiseは実行文の中でresolve(event)を実行しない限りkintoneが次の処理に移る(submitの場合、レコードの保存処理)のを待ってくれる機能です。
プログラムは上から順に実行されますが、API等の処理(非同期処理といいます)は実行はするものの、すぐに結果を得られるわけではない(イメージとして、他の機械に「レコードの取得を行う『命令』を行う」までがこのkintone.api()というプログラムの実行文で、命令という処理が完了したため次に行きresolve()を実行してしまう=他の機械が命令の結果を得るより先にレコードの保存処理が動いてしまい、終了してしまう)ので、それを待つ処理か、結果を得られた後に次の処理を行うようにする必要があります。
コンソールが出たり出なかったり、APIが成功したりしなかったりするのはこちらが原因かと思います(サーバーのレスポンスが良くresolve()より前にレコードの取得が完了した場合は成功し、レスポンスが悪く先にresolve()が実行された場合は失敗)。
kintone.api()には引数として成功時に実行するためのsuccess functionがあるので
kintone.api(kintone.api.url('/k/v1/record',true),'PUT', kintbody,(resp) => {
resolve(event);
}, (error) => {
console.error(error);
});
と、この中でresolve()を実行すればレコードの取得を待って終了することができます。
以下は慣れてからで問題ありませんが、同じような処理(非同期処理)を複数繋げて行う必要がある場合
kintone.api(kintone.api.url('/k/v1/record',true),'PUT', kintbody,(resp) => {
kintone.api(/* 略 */, (resp) => {
kintone.api(...)
}, (error) => {
console.error(error);
});
}, (error) => {
console.error(error);
});
とどんどん複雑化していきます(コールバック地獄といいます)。これを簡略化するためにPromiseやasync/awaitといったものが作られたので、Promiseを理解するためにはこの辺りから覚えていく必要があります。
また、kintone.PromiseはPromiseの存在しない古いブラウザでもPromiseが実行できるように作られたもので、resolve()をすると終了して次の処理へ移行するものの、厳密には即時ではないので
letappid = XXX;//開きたいアプリのID
letnowRecordID = record.$id.value;
if(record["もう一つ登録"].value ==="あり") {
letres = confirm("保存しました。あたらしい登録画面へ遷移します。");
if(res){
window.open('/k/XXX/edit?action=XXXXXXX&app=XXX&record='+ nowRecordID,'\_blank');
}
}
resolve()後に実行しているこの処理は動く可能性がありますが、あまり良い形とは言えません。またedit.submitイベントであれば問題ないかと思いますが、create.submit(新規作成の保存ボタン押下時)ではレコード番号(nowRecordID)は生成されていない状態なので、保存が完了したsubmit.successで処理を行った方が良いかと思います。