HTML_AJAXによるAJAXの実践(3)ーー同期と非同期の実感
簡単に言ってしまえば、同期処理は順序処理で、
ユーザは一つのタスクが終わる前に待つしかないです。
非同期処理はマルチ処理で、ユーザは一つの処理を開始した後、
別の処理も行えます。
この違いでAJAXのメリットを実感できると思います。
下記、HTML_AJAXで体験してみましょう。
1、画面作成:
<!-- 同期.html --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>HTML_AJAX.grad</title> <script type="text/javascript" src="server.php?client=all"></script> <script type="text/javascript"> <!-- function grab() { document.getElementById("message").innerHTML = HTML_AJAX.grab('message.php'); } //--> </script> </head> <body> <input type="button" onClick="grab()" value="HTML_AJAX.grad in sync mode"> <div id="message"></div> </body> </html>
<!-- 非同期.html --> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>HTML_AJAX.grad</title> <script type="text/javascript" src="server.php?client=all"></script> <script type="text/javascript"> <!-- // コールバック関数を使用 function callback(message) { document.getElementById("message").innerHTML = message; } function grab() { document.getElementById("message").innerHTML = ""; HTML_AJAX.grab('message.php', callback); } //--> </script> </head> <body> <input type="button" onClick="grab()" value="HTML_AJAX.grad in async mode"> <div id="message"></div> </body> </html>
<?php // server.php // include 'HTML/AJAX/Server.php'; $server = new HTML_AJAX_Server(); $server->handleRequest(); ?>
3、実行するバック処理のPHPファイルを作成
<?php // message.php // sleep(3); echo "HTML_AJAX<br />"; echo "Show this in 3 Sec"; echo date('l jS \of F Y h:i:s A'); ?>
画面を見てみよう:
?同期の場合、ボタンが押下された後、3秒待って画面上時刻が表示される。
待つ間再度ボタンを押下することはできない。
?非同期の場合、ボタンが押下された後、すぐボタンが最後押下可能な状態に戻り、
連続押下すると、画面上の時刻は連続更新される。押下後結果が表示するまで、待つことはない。