お世話になります。
|
create.showイベントを複数発火させレコード値を書き換えるとき、変更が上書きされないようにしたいのですが、下記方法で問題ないでしょうか。
1.「レコードを再利用する」ボタンをクリックしてcreate.showイベントを発火させる
2.最初の処理でkintone.record.set()を使い、レコードの値を書きかえる(kintone.Promiseを使用しています)。
3.次の処理でkintone.record.get()でレコード情報を取得し、2の処理が反映されていれば処理を実行する(反映されていなければ、反映されるまで待つ)。
(2の処理は全体に適用するJS、3の処理はアプリ個別で適用するJSで処理を行います)
他に良い回避策があればご教示願います。
|
shinohara-k様
お世話になっております。
トヨクモの江田と申します。
私でしたら,Promiseのthen()メソッドを利用します.
処理1のkintone.record.set()が完了後,resolve()して処理2を行うようにします.
new kintone.Promise(function(resolve) {
kintone.events.on([
'app.record.create.show',
], function(event){
kintone.api(kintone.api.url('/k/v1/records', true), 'GET', {
app: kintone.app.getId(),
}).then(function(response){
//処理1.....
kintone.record.set(record);
resolve();
});
});
}).then(function(){
//処理2.....
})
江田様
回答ありがとうございます。
すみません、提供する情報が足りておりませんでした。
2の処理はアプリ全体に適用するJSで、3の処理はアプリ個別に適用するJSなのです。
同じソース内であれば江田様の方法が良いと思います。
他に良い方法あはありますでしょうか。または最初に提示した処理方法で問題ないでしょうか。
shinohara-k様
お世話になっております。
ファイルを分ける場合は下記のようになります.
window.firstProcess = function(){
return new kintone.Promise(function(resolve) {
kintone.events.on([
'app.record.create.show',
], function(event){
kintone.api(kintone.api.url('/k/v1/records', true), 'GET', {
app: kintone.app.getId(),
}).then(function(response){
//処理1.....
kintone.record.set(record);
resolve();
});
});
});
}
window.firstProcess().then(function(){
//処理2.....
});
江田様
ありがとうございます。
私が最初に提示した処理方法が問題ないかはわかるでしょうか?
すみませんが宜しくお願い致します
shinohara-k様
お世話になっております。
3番の「反映されていなければ、反映されるまで待つ」というのは,setIntervalで実装しているということでしょうか?
特段問題はないかと思いますが,「レコード情報を見比べて完了を判断」,「判断する処理を何度か繰り返す」ということを考えると,Promiseを用いた方が記述および処理が簡単になるかと思います.