JavaScript には Sleep や Wait のような仕組みはありません。

setTimeout 関数でブロック用のフラグを設けるくらいしか思いつきません。
正確な Wait でなくても良いのであれば、for を使うのも手でしょう

という風な感じに書かれているのですが
setTimeout 関数でブロック用のフラグというのは
どういった感じで書けばいいのでしょうか?

それとforを使うやりかたもどのように
書けばいいのか教えてくれませんか?

回答の条件
  • 1人10回まで
  • 登録:2007/05/17 10:14:10
  • 終了:2007/05/18 10:53:47

回答(4件)

id:aside No.1

aside回答回数339ベストアンサー獲得回数312007/05/17 14:27:53

ポイント25pt

下記ソースしかできなかた

alert("開始");

//1秒ウェイト

_sleep(1000);

alert("1s経過");

//2秒ウェイト

sleep(2000);

//ループ使用

function _sleep(time){

var d1 = new Date().getTime();

var d2 = new Date().getTime();

while( d2 < d1 + time ){

d2=new Date().getTime();

}

return;

}

// settimeout使用

function sleep(time){

setTimeout(after, time);

}

function after(){

alert("2s経過");

}

id:hopefully

どちらがいいですかね?

自分的にはループを使用したいのですが

永久ループにはならないですよね?

2007/05/17 14:44:35
id:jack_sonic No.2

じゃっくそにっく回答回数123ベストアンサー獲得回数252007/05/17 16:22:55

ポイント45pt

「待ち状態」と言う中で、

操作に応答しにくい状態での待ち(wait/ビジーウェイト/ループウェイト)

と、

操作に応答しやすい状態での待ち(sleep相当)

の2つがありますが、

JavaScriptの場合は、

ループを使うと、操作を受け取りにくい状態の待ち(ビジーウェイト)、

間隔の広いsetTimeout,setIntervalを使うと、操作を受け取りやすい状態での待ち(sleep相当)

というような感じに近くなります。

また、「ある条件を一定間隔で監視し、条件を満たしたら処理を起動する」といった、「条件監視sleep」も実装可能です。

サンプルソースはこちらに設置しました。

JavaScript/Sleep,Waitの実装 - ジャックズラボ jack's Lab

id:hopefully

大変ありがとうございます。

2007/05/18 10:52:56
id:aside No.3

aside回答回数339ベストアンサー獲得回数312007/05/17 16:24:29

ポイント10pt

特に永久ループにはならないとおもいま

id:hopefully

安心しました。

ありがとうございます。

2007/05/18 10:53:10
id:lunlumo No.4

lunlumo回答回数107ベストアンサー獲得回数142007/05/17 22:11:30

ポイント10pt

 既に指摘されている通り,JavaScript単体sleep処理は書けません。(ビジーリードか非同期処理を用いる他無い。)負荷を掛けず,同期処理上でsleep相当の機能を実現するには,サーバ再度にsleep機能を持たせ同期指定でアクセスする,JavaAppletやFlashを使用する,等,JavaScript以外の環境の助けを借りる必要があります。以下のページにJavaAppletを使用したsleepの実装例が紹介されていますので,参考にどうぞ。

http://www.oklab.org/test/

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません