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

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

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

JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
401 : Name_Not - 2018/07/19(木) 02:55:01.39 ID:???.net (+32,+29,-17)
まあ、理屈上は内部でsetTimeoutみたいに扱えばいいだけだとも思えるんだけどね
402 : Name_Not - 2018/07/19(木) 03:00:57.70 ID:???.net (+32,+29,-38)
>>401
使いにくいんですよね。
よくあるスリープの代替手段は
メモリ食うし。
スリープ実行でメモリ食うとか、最悪ですよ。
403 : Name_Not - 2018/07/19(木) 08:54:56.43 ID:???.net (+14,+12,-13)
>>400,402
sleepを使う合理的理由がないから
404 : Name_Not - 2018/07/19(木) 09:05:22.92 ID:???.net (+32,+28,-9)
sleepって何に使うんだろうな?
待たせたい時?何を?
405 : Name_Not - 2018/07/19(木) 09:09:53.62 ID:???.net (+33,+29,-16)
「真のプログラミング言語にはSleepなど必要ない」ワロタwww
ruby信者のruby擁護みたいな言い種wwwww
406 : Name_Not - 2018/07/19(木) 10:33:26.69 ID:???.net (-19,-17,-10)
sleep代わりにpromiseじゃだめなの?
直接的ではないにしろ事足りよね
407 : Name_Not - 2018/07/19(木) 11:04:04.96 ID:???.net (+36,+30,-72)
>>404
スリープを使うメリットは
メモリの使用量を減らしたいときとか
ブラウザが固まらないようにとか
任意のタイミングで処理を実行したりとか
とにかくあれば便利だ

まあ、私が初心者というのもあるけど
ジャバスクリプトは、すごくやりづらいです
408 : Name_Not - 2018/07/19(木) 11:45:20.15 ID:???.net (-22,-29,-45)
>>407
これはひどい転嫁。
ブラウザが固まらないようにsleep??
pythonなど他の言語でも10秒sleepしたら10秒固まるのでは?
任意のタイミングで処理を実行??
まさにsetTimeoutやsetIntervalの出番では?
410 : Name_Not - 2018/07/19(木) 13:29:04.12 ID:???.net (+2,-5,-100)
>>407
sleepとpromise(コールバックなど含む)の違いは、
sleepは他の処理が終わってようが終わってまいが、
指定された時間ただ待つだけ

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

他の処理の完了を効率よく待つのはsleepでは実現できないんだけど
なんでsleepがいるの?
411 : Name_Not - 2018/07/19(木) 13:32:03.57 ID:???.net (+37,+30,-53)
>>405
> 「真のプログラミング言語にはSleepなど必要ない」ワロタwww

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

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

他の何かが準備できるのを待つことに対してはsleepはいらないんだから、
じゃあ他に何にsleepを使うのかと
412 : Name_Not - 2018/07/19(木) 14:18:47.41 ID:???.net (+27,+29,-13)
さすがに「ちょっとしたデバッグのために」とかじゃないよな・・
それこそコンソール使えばいいし
413 : Name_Not - 2018/07/19(木) 14:51:26.03 ID:???.net (-11,-17,-119)
何のためにsleepを使うか

重い処理をやってるときに途中途中で画面に反映したいとき
setTimeoutでもなんとかなるけどsetTimeoutの再帰呼出では迂遠になるケースがある

処理Aと処理Bの間にちょっとウェイトを入れたいとき
アニメーションとか。setTimeoutでできるんだけど重なると面倒だしsleepの一行でできると楽
414 : Name_Not - 2018/07/19(木) 14:53:28.90 ID:???.net (+33,+29,-35)
というか他言語でのsleepも原則「他処理にいったん明け渡したい」用途がデフォじゃない?
待つ用途で使うというよりも
415 : Name_Not - 2018/07/19(木) 15:01:30.30 ID:???.net (-28,-29,-18)
>>413
そういう処理ならsleepの一行じゃ無理じゃん。ループの中に書かないと。
一方のjsはsetInterval一発なのであったw
416 : Name_Not - 2018/07/19(木) 15:05:08.99 ID:???.net (+29,+29,-55)
>>415
例の前者のほうはループ必要だけどサブルーチン化は原理的には必要ない
setTimeoutやsetIntervalはサブルーチン化を強いられる
しかも再設定と離脱の仕組みを入れなきゃいけない分、どうしても複雑になるだろう
例の後者のほうはループ不要
418 : Name_Not - 2018/07/19(木) 15:24:56.78 ID:???.net (+27,+29,-49)
まあそういう風にやっちゃえば良くもあるんだけどね
ms待機とms以上待機とは厳密には違うということもあるけど実際そうそう問題にならないし

ただ、言語側で用意しようよという話
419 : Name_Not - 2018/07/19(木) 15:47:06.82 ID:???.net (+27,+29,-31)
使いやすいところにsleep()があって気軽に使えるようになると
全体的にみればページロード完了までの所要時間が伸びるから
それを嫌ったのが実際のところじゃないかと
420 : Name_Not - 2018/07/19(木) 17:33:33.33 ID:???.net (+31,+29,-39)
>>413
> 何のためにsleepを使うか
>
> 重い処理をやってるときに途中途中で画面に反映したいとき

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

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

ほんと何言ってるんでしょうかw
421 : Name_Not - 2018/07/19(木) 17:35:39.13 ID:???.net (+32,+29,-47)
>>414
> というか他言語でのsleepも原則「他処理にいったん明け渡したい」用途がデフォじゃない?

今どきのOSはマルチタスクなんでー
sleepなんかしなくても他処理に明け渡されます。
422 : Name_Not - 2018/07/19(木) 19:00:57.33 ID:???.net (-26,-29,-7)
昔のゲーム宜しく
sleep(10); //これを挟むとなぜか動く
でもやりたいんか
424 : Name_Not - 2018/07/19(木) 19:06:21.42 ID:???.net (-26,-29,-70)
別にsleep使えばいいじゃん
自分で1行で定義すればasync関数内でそれっぽく使えるんだからさ
勿論setTimeoutというか、ブロッキングが気になるなら
requestIdleCallbackのようなものも検討していいケースもあると思うよ
でもsleep=悪ってことは無いと思うね
例えば同じように悪だと言われるevalよりも遥かに有用なテクニックだろうよ
425 : Name_Not - 2018/07/19(木) 19:11:14.34 ID:???.net (+30,+29,-16)
>>422
sleep10秒挟むとなぜか動くってなに
興味がわいてしょうがないんだが
426 : Name_Not - 2018/07/19(木) 19:34:06.30 ID:???.net (+37,+30,-247)
>>425
昔のゲームはOSなど無いに等しくハードウェアを直接操作していた。

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

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

もちろんブラウザでもOSやドライバ、それらを経由して
何かの処理に時間がかかるような場合は、コールバック関数が呼ばれることとなった
そのためブラウザでsleepは不要となった。またsleepは処理が止まり、
表示されたページも固まるのでユーザーインターフェースとしても不適切であり
避けるべきものとなった
427 : Name_Not - 2018/07/19(木) 19:34:10.33 ID:???.net (+38,+30,-110)
10秒じゃなくて10ミリ秒だろ
つうか今でもJSみたいなイベント駆動じゃなくて
その対極に位置するポーリングタイプの言語環境では
ビジーループ回してsleepしながらポーリングするっていうのは普通になされていること

例えばゲームではコントローラーの状況をループでずっと確認し続けて
前回と変わっていれば変化があったと見なす
そういうのは普通に行われていること
429 : Name_Not - 2018/07/19(木) 19:44:58.75 ID:???.net (+35,+29,-22)
>>427
だから何度も言ってるけど、sleepしたら処理が止まるだろ
画面書き変わらなくなるぞ
432 : Name_Not - 2018/07/19(木) 20:04:17.34 ID:???.net (+27,+29,-51)
ゲームじゃなくても今のPCハードでも
イベントが軸になってるフレームワーク使わないで普通にcで書くと
sleepさせないで重い処理すると「応答がありません」ってなるんじゃないんか
434 : Name_Not - 2018/07/19(木) 21:09:54.86 ID:???.net (-26,-29,-93)
>>430
えっ? 自分の書き込み良く読み直してごらんよ。
直前のdomを操作する処理がもし同期処理なら、hogehogefunction()とそのまま呼んでもdom更新後に実行されるでしょ。
そうではなく非同期だからsetTimeout でくるむテクニックがあるわけで。
435 : Name_Not - 2018/07/20(金) 00:13:54.37 ID:???.net (+24,+29,-84)
>>434
じゃあなんか再現する例出してみなよ
DOMの操作は同期処理。
だから何か操作した後にすぐに参照しても操作後のデータが得られる。
ただしDOM描画は同期じゃないがな
437 : Name_Not - 2018/07/20(金) 06:17:27.61 ID:???.net (+16,+11,-35)
>>429
sleepを使う言語の多くにおいて描画スレッドは別だろ
むしろ他のスレッド、プログラムにCPUを明示的に明け渡さないと
プログラムはフリーズするしPCも重くなる
438 : Name_Not - 2018/07/20(金) 06:42:35.75 ID:???.net (+32,+29,-38)
最近のブラウザで言うと正確には操作の時点で同期処理とは限らないよ
例えば要素の形を変えたりするような操作は非同期である程度まとめて扱われる
もしgetClientRectsを読んだりするとその時点でブロックして構築・計算される
439 : Name_Not - 2018/07/20(金) 07:05:01.10 ID:???.net (+32,+29,-99)
「操作の時点で同期処理とは限らない」ってことは、同期なものも非同期なものもある、ってことだよな

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

getClientRects()は操作側じゃなくて描画側の今現在の状態取得なんだから例として不適切では
440 : Name_Not - 2018/07/20(金) 07:11:46.85 ID:???.net (+28,+28,-10)
>>437
仕様を読めば分かると思うが、JavaScriptはHTMLパーサに割り込んで同期的に処理されるぞ
441 : Name_Not - 2018/07/20(金) 07:21:08.93 ID:???.net (+19,+26,-5)
そのレス先jsの話じゃなくね
442 : Name_Not - 2018/07/20(金) 12:01:40.14 ID:???.net (-24,-29,-95)
>>437
> sleepを使う言語の多くにおいて描画スレッドは別だろ
そうだよ? だから描画スレッドでsleepは使えないって言ってるんだが?

だから何度も言ってるけど、(描画スレッドで)sleepしたら処理が止まるだろ
画面書き変わらなくなるぞ
444 : Name_Not - 2018/07/20(金) 12:44:03.61 ID:???.net (-12,-8,-17)
入力フォームが整数かどうかチェックする関数ってないですか?
isNaNは文字列だとダメみたいだしありそうなのに出てこない
445 : Name_Not - 2018/07/20(金) 12:51:34.92 ID:???.net (-28,-29,-27)
type number で stepを1にしておけばデスクトップでは整数入力になるでしょ
その後念の為数値を|0すればいいんじゃない
448 : Name_Not - 2018/07/20(金) 13:13:30.10 ID:???.net (-21,-21,-13)
>>444
文字列なんだから普通に正規表現でいいんじゃないの
449 : Name_Not - 2018/07/20(金) 14:33:56.02 ID:???.net (+28,+29,-77)
>>445
ありがとうございます
しかも最大最小チェックまでできるんですね
JSで値チェックして確認するアクションを作ろうとしてしてたんですけど必要なくなったので嬉しい
HTML5すごいですね

>>448
自分にとっては正規表現は普通じゃないんです
あんな意味不明な文字列かけるの理系のエリートだけじゃないの?
450 : Name_Not - 2018/07/20(金) 16:09:20.52 ID:???.net (+27,+29,-11)
> あんな意味不明な文字列かけるの理系のエリートだけじゃないの?

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

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


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