May
16
2009

非同期の罠

Print
0 votes
Blog - Javascript
Written by:Joomler! 6033 hits

Ajaxでpostしてデータベースの操作を行っていたのですが、思ったように動いてくれないんですよ。
タイトルで結論がもう見えてますが・・・。

大雑把に書くと、Ajaxでデータベースの複数の操作を行うリクエストをループで行うように書いたんです。最初は、その処理毎に(非同期がその時はちゃんと頭に入っていた。)Completeしてから次のリクエストを行うようにしていました。

けど、だんだん面倒になってきたんです。

Javascriptを変更するのが面倒になってきて、つい、魔が差してしまいました。複数の処理を同期せずに行ったんです。その結果、SQLクエリは、間違っていないし、何度やっても同じに見える間違った結果が発生しました。

処理上どうなってそんな結果が出たのかわからんが、SQLのUPDATE文が正しく動かない。異なるIDのフィールドに別のIDの値を放り込んでくれる。

あるんですねぇ・・・。

LOCKするって手もありなのかなぁ。

結局、先に書いたようにCompleteしてから次のループに進むように変更して完了した。

面倒がらずにちゃんとしよう。でも、眠いときってホントに眠い事しますね。はじめは、少し画面を見ながらボーッとしてましたよ。「なんで?」って。

TagsLOCK,ループ,UPDATE文,複数,ajax,変更,処理,はじめ,リクエスト,タイトル,フィールド,SQLクエリ,操作,データベース,処理毎,complete,結果,非同期,結論,Javascript
 

JContentPlus for Joomla!1.5 powered by Joomler!.net