- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:2番目の関数が先に実行されてしまうことってあるの?)
2番目の関数が先に実行されてしまうことってあるの?
このQ&Aのポイント
- javascriptで、testという関数の中で2つの関数を呼び出しています。testAとtestBではそれぞれデータベースに接続しています。
- そこで質問なのですが、testBは、testAの処理が全て終了してから実行されると思っていたのですが、testAの処理途中からtestBが実行されることはあるのでしょうか?
- testAでは、updateのSQLが流れて、testBではinsertのSQLが流れます。それぞれ、処理の最後には、JSPを更新しています。testAの処理がされずに、testBの処理だけされている状態になることがあるのです。testBの最後の更新のタイミングが、testAの処理よりも早く終わってしまっているのかなと思いまして。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
function test(){ testA(); testB(); } この記述だと順番関係なく人間時間なら同時実行です。 testA と testBの ソースを test()に埋め込んでるわけではなくて、 ただAとBに外注してる状態ですから、ほぼ同時発注みたいなもんです。 それぞれの外注が勝手に仕事して勝手に結果出します。 Aが終わってからBにする場合 関数が一緒にできないとして、 test() にフローを作って置きたいなら testAの最後を return trueにして function test(){ if( testA() ) testB(); } とか。 実際は関数testAの最後にtestB()って書くだけでもなんでも良いですけど。
その他の回答 (1)
- ai10
- ベストアンサー率27% (3/11)
回答No.2
testA, testB のソースも書いていただけると、 回答してくださる方ももっと具体的な説明ができるのではないでしょうか。
質問者
お礼
ありがとうございました。解決いたしました。
質問者
補足
ありがとうございます。 testA、testBはそれぞれ下のような感じです。 actionで、データベースにアクセルするクラスに飛んでいます。 testA(){ action="××update××"; method="post"; target="FRAMEH"; submit(); } testB(){ action="××insert××"; method="post"; target="FRAMEH"; submit(); }
お礼
すみません、submitの後で、関数はちゃんと呼べました。 解決いたしました。ありがとうございました。
補足
回答ありがとうございます。 そうなんですね。同時発注なんですね。 return true;を入れれば良いのかというところでつまづいています。 またtestAの最後にtestBを入れる場合は、submit()の前も後もどちらに書いても呼ばれないですよね。 testA(){ action="××update××"; method="post"; target="FRAMEH"; submit(); } testB(){ action="××insert××"; method="post"; target="FRAMEH"; submit(); }