お世話になっております。
タイトルの通りchangeイベント使用時に非同期処理をpromiseで処理を行いたいのですが、
kintone側の制約がありどのように記述すればいいのかわかりません。
まず行いたい事は下記となります。(初回で記述したコードです。)
・元請け情報と金額が変更されたときにイベント発火。
・元請け情報(マスター)に登録済みの時「金額を20%OFFするかどうかの」確認ダイアログを表示し、
YESの場合金額を20%OFFに書き換える。
//元請け登録済みの場合、金額を20%OFFする。
var event = ['app.record.create.change.元請け情報選択',
'app.record.edit.change.元請け情報選択',
'app.record.create.change.金額',
'app.record.edit.change.金額']
kintone.events.on(event, function(event) {
var record = event.record;
var motouke = record['元請け情報選択']['value'];
var money = record['金額']['value'];
if(motouke === '元請け有(得意先管理登録済)'){//元請け登録済みの場合の処理
var off20 = window.confirm('金額を20%OFFの卸価格に変更しますか?');
if(off20){
record['金額']['value'] = money*0.8;
return event;
}else{
return;//NOの場合何もしない。
}
}else{//元請け以外の場合は何もしない。
}
});
こちらのコードで実行したところ、確認ダイアログの無限ループが始まりました。
おそらくconfirmでtureを返す前に次の処理に行くためにループになるのでは?と思い
promiseでconfirmを処理してから進む記述にしたいと思っております。
色々試行錯誤したのですが、まずchangeイベントではpromiseをreturn出来ないので、
kintone.mobile.app.record.get();とkintone.app.record.set();使用しなくてなならないかと思います。
ですがそのget・setはkintone.events.on内では使用が出来ないとの事で書き方が分からずお手上げ状態です。
まず上記を実現したい場合、confirmが非同期処理になるのでpromiseを使用するという考えは有っているのでしょうか?
また、promiseのreturnとget・setが使用できない場合はどのように記述をすればいいのでしょうか?
よろしくお願い致します。