JavaScriptでsleepの実装を試みる
JavaScriptで、sleepという話が出ているのを見かけ、そういえば1年程前のJavaScript触りはじめの頃に私も調べたなぁ……と懐かしく思い出されました……けれども、あれ、結局方法見付けたんだっけ?
var startTime = (new Date()).getTime() ;
var stopTime = startTime + Math.floor(1000*sec) ;
for (;;) {
var curTime = (new Date()).getTime() ;
if ( stopTime <= curTime ) break ;
}
} // end of JSleep_NowaitLoop()
- ダイアログを非表示に出来ない(方法がわからない)。
- そもそもIEでしか動かない。
要は、
- 適当なファイルをXMLHttpRequestで取得。
- XMLHttpRequestは同期モードで使用(Sjax……だっけ?)。
function JSleep( sec ) {
var startTime = (new Date()).getTime() ;
var stopTime = startTime + Math.floor(1000*sec) ;
for (;;) {
var xmlHttpObj = null ;
if ( typeof ActiveXObject != "undefined" ) {
var msXml = [ 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP' ] ;
for ( var ci=0; ci < msXml.length; ci++ ) {
xmlHttpObj = new ActiveXObject( msXml[ci] ) ;
if ( xmlHttpObj ) break ;
}
}
else if ( typeof XMLHttpRequest != "undefined" ) {
xmlHttpObj = new XMLHttpRequest() ;
}
if ( !xmlHttpObj ) break ;
for (;;) {
var curTime = (new Date()).getTime() ;
if ( stopTime <= curTime ) break ;
xmlHttpObj.open( 'GET', JSleepDummyFile + '?time=' + curTime, false ) ;
xmlHttpObj.send( null ) ;
}
break ;
}
} // end of JSleep()
2007/02/16(金) 07:47 | 固定リンク
| 記事の編集(管理者用)
「おもいつき」カテゴリの記事
- 無粋(2010.11.21)
- マッサージクッションの正しくないかも知れない使い方(2010.11.19)
- もし、思考が映像化される装置が出来たら…(2010.11.20)
- ココでも:ココログ広場ユーザーのブログをキーワードで検索するサービスを試作(2010.10.29)
- ココログ用ReadMore:トップページの『》 続きを読む』をその場で展開するスクリプト(2010.11.06)
「パソコン・インターネット」カテゴリの記事
- 探しものって、みつけにくいものですね…(2012.02.13)
- Norton Internet Securityでエラー: 「3043,1」(2011.07.13)
- アンケート:ブログ等で「続きを読む」リンクを見たら…(2010.11.05)
- 読者参加型Web小説作成サイトを試作してみた:『胡蝶の夢語り』(Hermit's Adventures in Wonderland)(2010.10.22)
- Google画像検索関連スクリプトを更新(AutoPagerize版ver.0.01k/単独版ver.0.04)(2010.10.08)
「覚書」カテゴリの記事
- Norton Internet Securityでエラー: 「3043,1」(2011.07.13)
- 終わりを惜しむ6タイトル(2010.12.19)
- ココでも:ココログ広場ユーザーのブログをキーワードで検索するサービスを試作(2010.10.29)
- ココログ用ReadMore:トップページの『》 続きを読む』をその場で展開するスクリプト(2010.11.06)
- ココだい:ココログ広場 ≫ つぶやきのお題をキーワードで検索するサービスを試作(2010.11.07)


ネットワーク負荷が高まるので嫌な感じです。
あと、firefoxの実装の問題でもあるのですが、NowaitLoopもファイル取得もfirefox全体が止るのも嫌な感じです。
投稿: おーの | 2007/02/17 1:32:49
まぁ、もともと無理は承知なわけですが。
#もっとスマートな実装方法あれば教えてください。
| ネットワーク負荷
回線状態がよい環境ほどかかりますからね(苦笑)。
当方の環境(Bフレッツ100M)だと上下併せて800~1000パケット/10秒程度。~1Mbpsってところですかね。
| firefox全体が止る
IEもとまります。
XP上で試すと、
■IE6 SP2:全体停止。複数クライアント起動の場合、実行中のもの以外は動作。
■Firefox2.0.0.1:全体停止。複数クライアント起動の場合、実行中のもの以外も停止。
■Opera9.10:実行中もブラウザ操作可能。
#Firefox、意外といけてない……
ちなみに、XMLHttpRequestを同期モードで実行中には、setTimeoutによる割込もブロックされて(待たされて)しまいます<IE6とFirefox(Operaは未確認)。
投稿: 風柳>おーの さん | 2007/02/17 4:54:10
firefoxって、ネットワークとかDNS要求とかが複数窓で完全には独立していないように見えますね。スレッド化が中途半端とか?
投稿: おーの | 2007/02/17 16:13:39