🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

4回答

1477閲覧

JavaScriptで「ちょっと処理を遅延させたいとき」

kannmuri

総合スコア42

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

1クリップ

投稿2019/12/21 09:26

編集2019/12/21 12:30

処理と処理の間を少しもたつかせたいとき、どうするのがいいですか?

下記の感じを試したのですが、これだと必要なコンソールまで削除されてしまいますし、かといって削除しないと不要なコンソールが10000個でてしまいますし、と悩んでます。

setTimeOutなど非同期系はナシとして、他に良い知恵ありましたらお願い致します。

js

1function DelayProcessing( count ){ 2 for ( var i = 0; i < count; i++ ) { 3 console.log(i); 4 console.clear(); 5 } 6} 7 8$('body').append('hello'); 9DelayProcessing(10000); // ここでもたつかせたい 10$('body').append('world'); 11

###遅延させたい理由
ABCの非同期処理がすでに実装済みで、ちょっと確認したいことがあったのでAとBの間で今回の「もたつかせる」をしたかったということです。まぁもう一つ非同期処理を挟んでもいいんですけど、テストのためのだけのことなのでその手間を省くべく、質問した感じになります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2019/12/21 10:02

具体的に、どのようなコンソールの状態にしたいのですか?そして、それと「ちょっと処理を遅延させたい」というのは、どうつながるのでしょうか。
kannmuri

2019/12/21 10:06

コンソールはあってもなくてもいいです。ちょっと遅延させたいだけなので。 コンソールに出したりせず足し算してもいいですし、とにかくうまく遅延させたいときの書き方はどうしたらいいのか、というのが質問になります!
fiveHundred

2019/12/21 11:46

何らかの動作確認をしたい、などと言った具合に、具体的に遅延させたい理由を記載してください。 (そうでないと信じてますが)もし「非同期処理が分からないからそのようにしたい」というのであれば、学習不足に対する怠け以外の何物でも無いので、この際に非同期処理を勉強することをおすすめします。
kannmuri

2019/12/21 12:32 編集

情報不足すみません。「遅延させたい理由」を追記しました。
think49

2019/12/21 14:03

> ABCの非同期処理がすでに実装済みで、ちょっと確認したいことがあったので 「ちょっと確認したいこと」が理由のようですので、そこを具体化してください。 個人的には要件そのものが「良い知恵」に結びつかない気がしていますが…。
urbainleverrier

2019/12/23 03:19

if function_exists?的な処理を噛ませるのはどうですか? もしくはif debug的なやつです。
guest

回答4

0

確認したいことがあるなら、もたつかせるのではなくdebugger;を使用してください。

投稿2019/12/21 19:58

H40831

総合スコア975

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

AkitoshiManabe

2019/12/21 20:36

質問者さんの過去の質問からも jQuery.Deferred($.when()) の挙動を知りたいのだと感じてます。 もしそうなら、H40831 さんのこの回答が一番的を射てますねぇ。
guest

0

処理と処理の間を少しもたつかせたいとき、どうするのがいいですか?

非同期系を使ってください。

setTimeOutなど非同期系はナシとして、他に良い知恵ありましたらお願い致します。

UIを意図的にロックさせる方法しかありません。

javascript

1console.time(); 2var lockingSec = 2; 3var currentTime = Date.now(); 4var lockEnd = currentTime + lockingSec * 1000; 5while( currentTime < lockEnd ){ 6 currentTime=Date.now(); 7} 8console.timeEnd();

ブラウザのコンソールで動きます.
console.time(), console.timeEnd() の使い方ということで

投稿2019/12/21 11:12

編集2019/12/21 11:31
AkitoshiManabe

総合スコア5434

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

時間を経過させたいということなら10秒sleep
あ、ごめんなさい。asyncも無しなんですね。

javascript

1const sleep = msec => new Promise(resolve => setTimeout(resolve, msec)); 2 3(async () => { 4 console.log('hello'); 5 await sleep(10000); 6 console.log('world!') 7})();

投稿2019/12/21 10:21

編集2019/12/21 10:23
madone99

総合スコア1857

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kannmuri

2019/12/21 10:25

いい書き方ですね。ですがsetTimeOutなど非同期系はナシとして探しています。
story_aniki

2019/12/21 10:39 編集

一つ確認なのですが、非同期をなしというのはAの処理をして次にBの処理をして、更にその次にCの処理をする、というような順序を崩したくないというのが理由でしょうか? つまり、Aという処理だけを遅らせると、処理の順番が、BACの順になったりBCAの順になることを避けるためという事でよいでしょうか?
kannmuri

2019/12/21 12:31 編集

あ、仰る通りですー。 (以下質問本文に追記しました) ~~~~~~~~~~ ABCの非同期処理がすでに実装済みで、ちょっと確認したいことがあったのでAとBの間で今回の「もたつかせる」をしたかったということです。まぁもう一つ非同期処理を挟んでもいいんですけど、テストのためのだけのことなのでその手間を省くべく、質問した感じになります。 ~~~~~~~~~~ わかってくださってありがとうございます。
guest

0

とにかくうまく遅延させたいときの書き方はどうしたらいいのか、というのが質問になります!

ブラウザのJavaScriptでは、非同期処理のほぼ一択です。

ブラウザのUIとJavaScriptは同期して進みますので、無理やりループなどを回して処理時間を消費させてしまうと、その間UIがロックすることになってしまいます。実運用するサイトではほぼ使えません。

投稿2019/12/21 10:10

maisumakun

総合スコア145967

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kannmuri

2019/12/21 10:12

実運用では使わないので、そこの心配は大丈夫です。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問