kintone.Promiseの使い方について、
下記サイトを読んでkintone.Promiseを使うと、kintone.api()の前で毎回でreturnせずに済むという認識です。
https://developer.cybozu.io/hc/ja/articles/360023047852-kintone%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8BPromise%E3%81%AE%E6%9B%B8%E3%81%8D%E6%96%B9%E3%81%AE%E5%9F%BA%E6%9C%AC
この認識があっているとして、
今回使用するイベントが値変更時のchangeのため、
Promiseをreturnできない、逆に言えばreturnする必要がないと考えています。
この場合、
return new kintone.Promise(function …
と普通なら書くところを
new kintone.Promise(function …
と書いて、以降のkintone.api()もreturnしなければエラーはでない認識で合っていますでしょうか?
コードは以下の質問でご回答いただいたコードとほぼ同じです。
https://developer.cybozu.io/hc/ja/community/posts/4404708498201-%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%82%92%E5%88%A5%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AE%E3%82%B5%E3%83%96%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%AB%E4%BF%9D%E5%AD%98
カスタマイズ初心者のため、このやり方で問題が無いのか不安になり、質問させていただきました。
よろしくお願いします。
Jさん
お世話になっております。
> kintone.Promiseを使うと、kintone.api()の前で毎回でreturnせずに済む
kintone.Promiseとkintone.api()の両方とも、returnさせることもreturnさせないこともあり、状況次第ですね。
ご覧になったのは、ご提示いただいたリンクの「kintone.Promiseの使い方」という箇所かと思います。
この例は、kintone.Promiseを明示的に書いてわかりやすくできるということだと思います。
kintone.api()は、successCallback(第4引数)を省略した場合、kintone.Promiseを返すようになります。
下記の2つのコードは同じ結果となります。
kintone.Promiseを明示的に書く場合
new kintone.Promise(function(resolve) {
kintone.api(
kintone.api.url('/k/v1/records', true),
'GET',
{ app: kintone.app.getId()},
resolve
);
}).then(console.log);
successCallbackを省略する場合``
kintone.api(
kintone.api.url('/k/v1/records', true),
'GET',
{ app: kintone.app.getId()}
).then(console.log);
どちらで書くかは、明示的なわかりやすさを取るか、簡潔さを取るかで選べばよいかと思います。
> 今回使用するイベントが値変更時のchangeのため、Promiseをreturnできない
仰る通りです。
changeイベントで非同期処理後にレコードをセットする場合は、kintone.app.record.set()を用いると良いと思います。
kintone.events.on のイベントハンドラ内では使用できないとありますが、非同期処理後のタイミングであればイベントのプロセスが完了しており、使用できるかと思います。
``