@yosuketanaka (陽介 田中)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

setTimeout関数を連続で使用したい

発生している問題

下記のコードのようにsetTimeout()関数を2回連続使用すると、
実質的に1回目のsetTimeout()と2回目のseTimeout()が同時に処理をしている時間があり、
重くなります。

解決したいこと

1回目のsetTimeout()が終わった後に、2回目のsetTimeout()を実行させる
という方法がもしあれば教えて頂きたいです。


平日でお忙しい中、恐れ入りますが宜しくお願いいたします。

           //ここの部分です↓( 1回目のseTimeout()関数 )
           setTimeout(()=>{
               box.animate([{opacity:'0'},{opacity:'1'}],1000);
               box.style.opacity = "1";
           },500);
           //ここの部分です↓( 2回目のseTimeout()関数 )
           setTimeout(()=>{
               filter.animate([{opacity:'0'},{opacity:'0.4'}],100);
               filter.style.opacity = "0.4";
               boxes.forEach((e=>{
                   e.style.opacity = 1;
                   e.classList.remove('same');
               }))
               },2000);

           //↑↑↑↑これらを同時にではなく、「1回目が終わった後に、2回目を行う」という処理をしたい
0 likes

2Answer

1回目のseTimeout()関数の中に2回目のseTimeout()関数を書いたら解決しませんか?

↓こんな感じで


//1回目のseTimeout()関数
setTimeout(()=>{
   box.animate([{opacity:'0'},{opacity:'1'}],1000);
   box.style.opacity = "1";
   //2回目のseTimeout()関数
   setTimeout(()=>{
      filter.animate([{opacity:'0'},{opacity:'0.4'}],100);
      filter.style.opacity = "0.4";
      boxes.forEach((e=>{
          e.style.opacity = 1;
          e.classList.remove('same');
      }))
      },2000);
},500);

0Like

@Shiro-neko-kamen

解決できました。
思っていたよりも簡単な記述で解決できると知ったので、
もう少し、深く思考して、解決するようします!

早速のご回答に大変感謝しております。
ありがとうございました!

0Like

Your answer might help someone💌