回答編集履歴

1

回答が不足していたようなので追記。

2020/05/03 09:41

投稿

Yasumichi
Yasumichi

スコア1773

test CHANGED
@@ -27,3 +27,37 @@
27
27
 
28
28
 
29
29
  だとすると `function sliderSlide(val)` が呼ばれた時点で評価されるので `var isChanging = false;` を指定した後にすぐに評価される訳ではないですよ。
30
+
31
+
32
+
33
+ 【追記】
34
+
35
+ 1 スライドのアニメーションが行われてる間も非同期で実行されるため、再度、`sliderSlide()` が呼ばれる可能性があります。
36
+
37
+
38
+
39
+ 2 なので上記の if 判定のあと、すぐに `isChanging = true;` に変更しています。
40
+
41
+
42
+
43
+ 3 そして、以下のところでアニメーションが終わるタイミングを待って、`isChanging` を `false` に設定しています。
44
+
45
+
46
+
47
+ ```javascript
48
+
49
+ // アニメーションが終わるタイミングでisChangingのステータスをfalseに
50
+
51
+ slideTimer = setTimeout(function(){
52
+
53
+ isChanging = false;
54
+
55
+ }, 600);
56
+
57
+ ```
58
+
59
+
60
+
61
+
62
+
63
+ これで2と3の間の処理中に `sliderSlide()` が呼ばれても何もせずに `return` という仕組みです。