のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,695,315人
昨日:no data人
今日:
最近の注目
人気の最安値情報

元スレ+ JavaScript の質問用スレッド vol.134 +

JavaScript覧 / PC版 /
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

401 = :

まあ、理屈上は内部でsetTimeoutみたいに扱えばいいだけだとも思えるんだけどね

402 = :

>>401
使いにくいんですよね。
よくあるスリープの代替手段は
メモリ食うし。
スリープ実行でメモリ食うとか、最悪ですよ。

403 = :

>>400,402
sleepを使う合理的理由がないから

404 = :

sleepって何に使うんだろうな?
待たせたい時?何を?

405 = :

「真のプログラミング言語にはSleepなど必要ない」ワロタwww
ruby信者のruby擁護みたいな言い種wwwww

407 = :

>>404
スリープを使うメリットは
メモリの使用量を減らしたいときとか
ブラウザが固まらないようにとか
任意のタイミングで処理を実行したりとか
とにかくあれば便利だ

まあ、私が初心者というのもあるけど
ジャバスクリプトは、すごくやりづらいです

410 = :

>>407
sleepとpromise(コールバックなど含む)の違いは、
sleepは他の処理が終わってようが終わってまいが、
指定された時間ただ待つだけ

promiseなどは他の処理が終われば即座に
それがわかるわけで待つやり方としてはこっちのほうが良い

他の処理の完了を効率よく待つのはsleepでは実現できないんだけど
なんでsleepがいるの?

411 = :

>>405
> 「真のプログラミング言語にはSleepなど必要ない」ワロタwww

実際そうじゃね? ただ単に待つだけの処理なんて意味ないよ

他の何かが準備できるまで待ちたいなら、
他の何かが準備できたら通知してくれる方が良い

他の何かが準備できるのを待つことに対してはsleepはいらないんだから、
じゃあ他に何にsleepを使うのかと

412 = :

さすがに「ちょっとしたデバッグのために」とかじゃないよな・・
それこそコンソール使えばいいし

414 = :

というか他言語でのsleepも原則「他処理にいったん明け渡したい」用途がデフォじゃない?
待つ用途で使うというよりも

416 = :

>>415
例の前者のほうはループ必要だけどサブルーチン化は原理的には必要ない
setTimeoutやsetIntervalはサブルーチン化を強いられる
しかも再設定と離脱の仕組みを入れなきゃいけない分、どうしても複雑になるだろう
例の後者のほうはループ不要

418 = :

まあそういう風にやっちゃえば良くもあるんだけどね
ms待機とms以上待機とは厳密には違うということもあるけど実際そうそう問題にならないし

ただ、言語側で用意しようよという話

419 = :

使いやすいところにsleep()があって気軽に使えるようになると
全体的にみればページロード完了までの所要時間が伸びるから
それを嫌ったのが実際のところじゃないかと

420 = :

>>413
> 何のためにsleepを使うか
>
> 重い処理をやってるときに途中途中で画面に反映したいとき

sleepなんだからそこで処理は止まりますよ?
画面に反映する処理もしませんよ

だってsleepして止まってるんだから

ほんと何言ってるんでしょうかw

421 = :

>>414
> というか他言語でのsleepも原則「他処理にいったん明け渡したい」用途がデフォじゃない?

今どきのOSはマルチタスクなんでー
sleepなんかしなくても他処理に明け渡されます。

425 = :

>>422
sleep10秒挟むとなぜか動くってなに
興味がわいてしょうがないんだが

426 = :

>>425
昔のゲームはOSなど無いに等しくハードウェアを直接操作していた。

そしてハードウェアの特定の命令は処理に時間がかかり
命令を出してから一定時間たたないと処理が終わらないことがあった
そういう場合はちゃんとハードウェアの仕様として最低Nミリ秒待つなどと書かれていた

しかし今の時代ハードウェアはOSやドライバが処理し、そのような処理に
一定時間かかるような、割り込みによって完了が知らされるようになった。
これにより処理が終われば通知されるため、スリープのように待ちすぎるようなことも無くなった。

もちろんブラウザでもOSやドライバ、それらを経由して
何かの処理に時間がかかるような場合は、コールバック関数が呼ばれることとなった
そのためブラウザでsleepは不要となった。またsleepは処理が止まり、
表示されたページも固まるのでユーザーインターフェースとしても不適切であり
避けるべきものとなった

427 = :

10秒じゃなくて10ミリ秒だろ
つうか今でもJSみたいなイベント駆動じゃなくて
その対極に位置するポーリングタイプの言語環境では
ビジーループ回してsleepしながらポーリングするっていうのは普通になされていること

例えばゲームではコントローラーの状況をループでずっと確認し続けて
前回と変わっていれば変化があったと見なす
そういうのは普通に行われていること

429 = :

>>427
だから何度も言ってるけど、sleepしたら処理が止まるだろ
画面書き変わらなくなるぞ

432 = :

ゲームじゃなくても今のPCハードでも
イベントが軸になってるフレームワーク使わないで普通にcで書くと
sleepさせないで重い処理すると「応答がありません」ってなるんじゃないんか

435 = :

>>434
じゃあなんか再現する例出してみなよ
DOMの操作は同期処理。
だから何か操作した後にすぐに参照しても操作後のデータが得られる。
ただしDOM描画は同期じゃないがな

437 = :

>>429
sleepを使う言語の多くにおいて描画スレッドは別だろ
むしろ他のスレッド、プログラムにCPUを明示的に明け渡さないと
プログラムはフリーズするしPCも重くなる

438 = :

最近のブラウザで言うと正確には操作の時点で同期処理とは限らないよ
例えば要素の形を変えたりするような操作は非同期である程度まとめて扱われる
もしgetClientRectsを読んだりするとその時点でブロックして構築・計算される

439 = :

「操作の時点で同期処理とは限らない」ってことは、同期なものも非同期なものもある、ってことだよな

DOM「操作」そのもので、非同期なもの・非同期になる場合って
具体的にどのブラウザの何?

getClientRects()は操作側じゃなくて描画側の今現在の状態取得なんだから例として不適切では

440 = :

>>437
仕様を読めば分かると思うが、JavaScriptはHTMLパーサに割り込んで同期的に処理されるぞ

441 = :

そのレス先jsの話じゃなくね

449 = :

>>445
ありがとうございます
しかも最大最小チェックまでできるんですね
JSで値チェックして確認するアクションを作ろうとしてしてたんですけど必要なくなったので嬉しい
HTML5すごいですね

>>448
自分にとっては正規表現は普通じゃないんです
あんな意味不明な文字列かけるの理系のエリートだけじゃないの?

450 = :

> あんな意味不明な文字列かけるの理系のエリートだけじゃないの?

バレターカ


←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について