回答編集履歴

1

おまけ追加

2018/09/14 06:20

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -47,3 +47,53 @@
47
47
  }
48
48
 
49
49
  ```
50
+
51
+
52
+
53
+ ---
54
+
55
+
56
+
57
+ 【おまけ】更に凝った実装にしてみる
58
+
59
+
60
+
61
+ test関数はシンプルに保ちたいなぁと思うのでラッピングしてみました。
62
+
63
+
64
+
65
+ ```JavaScript
66
+
67
+ var delay = function (fn, time) {
68
+
69
+ var isDoing = false;
70
+
71
+ return function () {
72
+
73
+ if (isDoing) return;
74
+
75
+ isDoing = true;
76
+
77
+ fn();
78
+
79
+ setTimeout(function(){ isDoing = false; }, time);
80
+
81
+ }
82
+
83
+ }
84
+
85
+ var test = delay(function () {
86
+
87
+ console.log('do test');
88
+
89
+ }, 3000);
90
+
91
+
92
+
93
+ test(); // "do test"が出力
94
+
95
+ test(); // すぐに再実行したので何も出力されない
96
+
97
+ setTimeout(test, 3500); // 3秒程経ってから"do test"が出力された
98
+
99
+ ```