forループの中でmysqlクエリを同期的に実行したいのですが、いい方法が思いつきません。
javascript
1//既に上流のclient.queryでrecordSetは取得済み 2for( var i=0 ; i < recordSet.length ; i++ ) { 3 client.query( 4 "SELECT * FROM tablename WHERE foo=?",[recordSet[i].nanika],function(e,r,f){ 5 console.log(i+"/"+r[0].length ); 6 }); 7}
(サンプルなのでクエリが非同期じゃなくてもいいじゃないな感じですが、本来は同期処理が必要なクエリです。)
asyncを使って非同期処理を同期的に処理をしたことは有りますが、それではうまくいきませんでした。
なにかヒントで構いませんので、教えていただけますとありがたいです。
同期的にということは実行される順序が重要な処理ということでしょうか? それとも、ここの実行順序は大事ではなく全てのクエリが完了し終えたことが保証されている時に何らかの最終的な処理を行いたいだけの話でしょうか?例えば、画面への描画など。
まさに実行順序が大事な部分になってきます。ユーザーへポイント付与を行う部分なので、順番が前後するとおかしくなってしまいますので…。
モバイルからなのでヒント程度ですが、再起処理と再起処理の中で一つ目の処理が次の処理を、また、二番目の処理が次の処理を呼び出すようにする必要があります。
その為にはnextIndexのような次に処理すべきrecordSetのindex値を保持する変数を宣言しておく必要があります。
ヒントありがとうございます。
回答2件
あなたの回答
tips
プレビュー