No.4ベストアンサー
- 回答日時:
こんにちは
通常のスクリプトは質問者様がお考えの通りシークエンシャルに処理されますが、ajaxのような非同期処理はそうではありません。
(だから非同期といわれるのでしょう)
>処理が終わってから次の処理とループで回す方法はないのでしょうか?
2通りの方法が考えられます。
一つ目は他の方がすでに回答なさっているように、非同期処理を行わないこと(=同期処理で処理すること)。
同期処理にすれば、シークエンシャルに処理されますので、通常のループの記法のままで順次処理がなされます。
もう一つは非同期処理を活かしてループと同じように処理できるようにする方法。
非同期の場合は、前述のようにシークエンシャルな処理は期待できませんので、通常のfor~~のようなループではうまくいきません。
非同期処理にはコールバックが設定されていると思いますが、これは非同期の処理が終わった時に続けて実行される内容を指定できるものです。
ですので、『カウンタを+1して、次のループを実行する』という関数を用意しておいて、これをコールバックとして呼び出すようにすれば、非同期処理でも順に処理することが可能となります。
(非同期処理を1ループ内で複数行っている場合は、制御がもう少し複雑になりますが、要領は同じです)
両者の違いは、同期処理で行う場合は待ち時間(ajaxの場合はレスポンスを待つ時間)の間もブラウザがスクリプトで拘束されるので、操作等を受け付けないのに対して、非同期処理の場合は待ち時間の間も別の操作や処理が可能になるという点でしょう。
Totalの処理時間については、ほとんがど待ち時間で決まってしまうので、単純なケースではどちらも同じと考えられるでしょう。
一方で、複数の非同期処理を並列で実行しているような場合は、全部を同期処理で処理するのに比して、速くなることが期待できます。
No.3
- 回答日時:
>一般的に処理が終わってから次の処理とループで回す方法はないのでしょうか?
いや、だから・・・最初に書いたとおり原則上から順に処理がすすみます。
「あえて非同期処理をしている」箇所があれば、それを同期処理に書き換えればいけます。
順番にやりたいのであれば、非同期処理がされている箇所を一つ一つつぶすしかありません。
No.2
- 回答日時:
>多分、ajax系のような操作をしています。
>XMLHttpRequestで、ページの情報を取得したり。
ajaxでURLをopenする際、第3引数にfalseをしていすると同期処理になります。
var async=false;//async=trueにすると非同期
ajax.open("GET", url ,async);
この回答へのお礼
お礼日時:2016/01/28 19:41
再度回答ありがとうございます。
処理の中にajaxの部分もあれば、他の処理もいろいろあります。
一般的に処理が終わってから次の処理とループで回す方法はないのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) マクロで謎の現象が起きていて困ってます。 エクセルで作ったボタンを押すとマクロが動いて処理をしてくれ 3 2023/06/22 17:28
- JavaScript 変数のスコープの問題? 3 2022/06/23 09:32
- JavaScript 助けてください‼︎ javascriptで質問があります。 配列を定義して、 29342、45342 3 2022/06/26 22:06
- Visual Basic(VBA) エクセルVBA コードが同じでもファイルによって処理速度が大きく変わるのはなぜ 5 2022/11/06 21:34
- その他(プログラミング・Web制作) Pythonでこのプログラミングを作成するには 2 2022/10/25 21:19
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- Excel(エクセル) excelにて、ある固定値から連番を振りたいが、上限値が異なる連番を振る処理を複数回行いたい場合 6 2022/10/22 11:01
- C言語・C++・C# C言語:数値の桁数指定についての質問です。 8 2022/05/26 23:53
- PHP PHPの変わった閉じタグの必要性と意味を教えてください。 1 2022/08/28 15:15
- 財務・会計・経理 決算書類作成について 5 2022/04/01 16:23
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
tryの終了
-
Javaでのデバッグコード削除
-
数値の定数を付ける時
-
ラジオボタンの選択判定
-
Tomcatのスレッドを破棄する方法
-
jQueryでdiv作成後まで待ってか...
-
tomcat(struts)で起動時に処理...
-
Mac上でWindowsのファイルパス...
-
JSPで「処理中」をブラウザに表示
-
アコーディオンメニューをアン...
-
C#で別スレッドの終了を知りたい
-
ExcelVBA で文字列の特定の文字...
-
Delphiのマルチスレッドの割り...
-
JDBCでテーブルUPDATE後の再検...
-
MVC C# 共通メソッドはどこに書...
-
SwingUtilities.invokeLater(ne...
-
ブラウザを閉じた後のサーバ側...
-
Java ファイルが生成させたか確...
-
Javaプログラムからポップアッ...
-
Tomcat高負荷時の設定について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
tryの終了
-
Javaでのデバッグコード削除
-
数値の定数を付ける時
-
Tomcat高負荷時の設定について
-
onBlurとonFocusの処理順序につ...
-
ExcelVBA で文字列の特定の文字...
-
JavaScriptからJAVAクラスを呼...
-
ラジオボタンの選択判定
-
アコーディオンメニューをアン...
-
ラベルの表示までが異常に遅い...
-
C#で別スレッドの終了を知りたい
-
WPF C#でF10のイベント取得方法...
-
JavaでVBのDOEVENTSと同様の処...
-
Javaプログラムからポップアッ...
-
Javaアプリケーション実行の返...
-
処理実行後、終了させないで最...
-
SwingUtilities.invokeLater(ne...
-
[Java] while(true)の意味
-
再度、スレッドが実行中かどう...
-
VBScriptでのWord印刷
おすすめ情報