お世話になっております。
度重なる質問で恐縮していますが、、、
タイトルの件になりますが
同期処理の為、xmlHttpRequestを用いて処理を行おうとしましたが、
consoleに警告ログが吐かれます。
同期通信を行う場合には、xmlHttpRequest使いなよ!って感じなのかなっと見受けられたのですが、違うのでしょうか。
仮にxmlHttpRequestは非推奨だよ!って言う場合には、
皆様方はどのように同期処理を実装しているかご教授頂ければ幸いです。
お世話になっております。
度重なる質問で恐縮していますが、、、
タイトルの件になりますが
同期処理の為、xmlHttpRequestを用いて処理を行おうとしましたが、
consoleに警告ログが吐かれます。
同期通信を行う場合には、xmlHttpRequest使いなよ!って感じなのかなっと見受けられたのですが、違うのでしょうか。
仮にxmlHttpRequestは非推奨だよ!って言う場合には、
皆様方はどのように同期処理を実装しているかご教授頂ければ幸いです。
鈴木さん こんにちは。
お使いのブラウザはFirefoxでしょうか?
できる限り非同期での実装をオススメしますが、どうしても同期じゃないとできないって時はしかたないかなという気もします。
以下参考
https://developer.mozilla.org/ja/Firefox/Releases/30/Site_Compatibility
同期 XMLHttpRequest が廃止予定となりました
Bug 969671 – Warn about use of sync XHR in the main thread
XMLHttpRequest コンストラクタの async 引数は初期設定で true となっており、false に設定するとリクエストを同期に変更できます。メインスレッド上での 同期リクエスト の使用、つまり ワーカー 以外での使用は、ユーザ体験に悪影響を及ぼすことから廃止予定とされ、開発者向けの Web コンソール に警告が出力されるようになりました。
カキ氷さん
私も出来る限り非同期がいいのはわかりますが、
イマイチ非同期をしっかり理解していないのかもしれませんが、
コールバック地獄にハマってる感があり、一旦同期処理で実装してみるかなっと思って質問させて頂いた次第です。
簡単にご説明すると以下のような事が原因でコールバック地獄にハマってます。
①非同期(kintone.api)にてAアプリから項目を取得し、コールバック内で変数Aに設定
②非同期(kintone.api)にてBアプリから項目を取得し、①で取得した変数Aを利用しコールバック内で項目内容の精査を行い、Bアプリで取得した項目を変数Bに設定
③②のコールバック内で非同期(kintone.api)にてCアプリから項目を取得し、Cアプリの項目を精査し、更新処理を非同期(kintone.api)にて実施しています。
※書きながらわけわからん・・・と思いながら書いてますが笑
まずは一旦非同期の理解をしっかり深めつつ、
適切な非同期処理を実装したいと思っております。
script苦手やー!
ちなみに別件ですが、
jqueryをkintoneで使う場合には、document.writeとかで直接CDNを記述する感じなのでしょうか?
順次で、かつ3つくらいであれば、コールバックしても良いような気がします。
同期/非同期処理はkintoneというよりJavaScriptの話かと思いますが、kintone含め一般的にはこちら(1, 2)にもありますように、jQueryのDeferredないしpromiseを使う方が多いんじゃないでしょうか。
jqueryをkintoneで使う場合には、document.writeとかで直接CDNを記述する感じなのでしょうか?
以前はJSファイルをアップロードするしか組み込み方法がなかったので、その足跡が残ったサンプルやTipsがありますが、ファイルでもURLでもライブラリを取り込めるようになった現状では多少の得失はあるかもしれませんが好みかと思います。
Ryu Yamashitaさん
ご回答ありがとうございます。
そうですね、非同期処理がどうも苦手というか勉強不足で理解が及んでいない箇所が多々ある所でして、悩んでました。
とりあえず今回は同期で実装し、非同期処理の理解が追いついた際には、リファクタして直してしまおうかと思います。
ファイルでもURLでもライブラリを取り込めるようになった現状
こちらなんですが、どっかに記述がありましたら参考になるURL教えて頂けないでしょうか?
communityで探してるんですが、探し方が悪いのかうまく見つけられないでいます。
宜しくお願い致します。
何をお応えしたら良いかよくわかりませんが、2014年4月のアップデートでURLによるライブラリ指定もできるようになりました。それまでは、ファイルをアップロードするしか方法がなかったので、CDNを使おうとすると、その中で document.write する等の方法でコールするしかありませんでした。ゆえに、
その足跡が残ったサンプルやTipsがあります
です。現在では document.write せずとも指定できるようになったので、例えばこのサンプルのようにjQueryの読み込みはkintoneに直接指定して、カスタマイズJSの中でコールするようなことはしていません(このサンプルも以前はdocument.write使っていたと思います)。なので、やり方は好みかと思います。
Ryu Yamashitaさん
ご回答ありがとうございます。
色々勘違いしておりました。
CDNをURLで指定しておけば、各jsファイルに特にインポートする記述は必要ないという事ですね。
(URLで指定さえしておけば、普通にインポートしているのと同じように呼び出せる)
今まであまり理解が及んでない箇所であり、一つのjsファイルに網羅的に全ての実装を書かなければいけないのと思っておりましたが、これでjsファイルの他jsの読み込み方法等の理解が出来ました。
ありがとうございます!