回答編集履歴

10

ソース修正

2021/09/11 19:04

投稿

退会済みユーザー
test CHANGED
@@ -192,11 +192,11 @@
192
192
 
193
193
  ```
194
194
 
195
- 上のコード、コピペしてブラウザに表示すればいちおう期待されてる動きになっとる思いますう。(さきほど、**一応**ゆうたのは、sleepersGeneratorん中が、`while(true)` になとって、`sleepers`が終わらないイテレータになってしまうところが、ちょっとキモチワルイという点ですねん。)
196
-
197
-
198
-
199
- しかし、上のコードでも `Array.from` 使うんは「何か変」て感じや。なんでゆうたら`Array.from`が返す配列を使ってないからのう。こういうときは、document.querySelectorAll('div') の返した要素のリストに対して、[forEach](https://developer.mozilla.org/ja/docs/Web/API/NodeList/forEach)使えばええ。
195
+ 上のコード、コピペしたHTMLファイル作ってブラウザに表示すれば期待されてる動きになっとる思いますう。(さきほど、**一応**ゆうたのは、sleepersGeneratorん中が、`while(true)` になとって、`sleepers`が終わらないイテレータになってしまうところが、ちょっとキモチワルイという点ですねん。)
196
+
197
+
198
+
199
+ そやけど、上のコードでも `Array.from` 使うんは「何か変」て感じや。なんでゆうたら`Array.from`が返す配列を使ってないからのう。こういうときは、document.querySelectorAll('div') の返した要素のリストに対して、[forEach](https://developer.mozilla.org/ja/docs/Web/API/NodeList/forEach)使えばええ。
200
200
 
201
201
  ```diff
202
202
 

9

ソース修正

2021/09/11 19:03

投稿

退会済みユーザー
test CHANGED
@@ -114,7 +114,7 @@
114
114
 
115
115
  の直前で0.5秒待つゆう処理を入れてできへんの? 」ゆうことかもしれへんね。
116
116
 
117
- それだとすると、一応、こないにすればできる。
117
+ それだとすると、**一応**、こないにすればできる。
118
118
 
119
119
  ```html
120
120
 
@@ -192,7 +192,7 @@
192
192
 
193
193
  ```
194
194
 
195
- 上のコード、コピペしてブラウザに表示すればいちおう期待されてる動きになっとる思いますう。(一応ゆうたのは、`while(true)` になとって、終わらないイテレータになってしまうところが、ちょっとキモチワルイという点ですねん。)
195
+ 上のコード、コピペしてブラウザに表示すればいちおう期待されてる動きになっとる思いますう。(さきほど、**一応**ゆうたのは、sleepersGeneratorん中が、`while(true)` になとって、`sleepers`が終わらないイテレータになってしまうところが、ちょっとキモチワルイという点ですねん。)
196
196
 
197
197
 
198
198
 

8

ソース修正

2021/09/11 13:30

投稿

退会済みユーザー
test CHANGED
@@ -193,3 +193,15 @@
193
193
  ```
194
194
 
195
195
  上のコード、コピペしてブラウザに表示すればいちおう期待されてる動きになっとる思いますう。(一応ゆうたのは、`while(true)` になとって、終わらないイテレータになってしまうところが、ちょっとキモチワルイという点ですねん。)
196
+
197
+
198
+
199
+ が、しかし、上のコードでも `Array.from` 使うんは「何か変」て感じや。なんでゆうたら`Array.from`が返す配列を使ってないからのう。こういうときは、document.querySelectorAll('div') の返した要素のリストに対して、[forEach](https://developer.mozilla.org/ja/docs/Web/API/NodeList/forEach)使えばええ。
200
+
201
+ ```diff
202
+
203
+ - Array.from(document.querySelectorAll('div'), async item => {
204
+
205
+ + document.querySelectorAll('div').forEach(async item => {
206
+
207
+ ```

7

ソース修正

2021/09/11 12:57

投稿

退会済みユーザー
test CHANGED
@@ -95,3 +95,101 @@
95
95
 
96
96
 
97
97
  さらに上のコード詰めるとすると、 質問の前提としてはArray.from 使うんがお題ゆうことやけど、for ... of でループさせるもんを配列にしとかなあかんわけではないねんから、[コレ](https://codepen.io/i8086x/pen/ZEyKXWq?editors=1010)でええやろ思いますー
98
+
99
+
100
+
101
+
102
+
103
+ ### 補足
104
+
105
+
106
+
107
+ 質問者さんが知りたいのは、「(for (...of ... )使えばできるのは分かった。そやけど) `Array.from` の第二引数として渡す関数、`item => { ・・・・ }` の中で、divの背景を赤にする
108
+
109
+ ```javascript
110
+
111
+ item.style.background = "red";
112
+
113
+ ```
114
+
115
+ の直前で0.5秒待つゆう処理を入れてできへんの? 」ゆうことかもしれへんね。
116
+
117
+ それだとすると、一応、こないにすればできる。
118
+
119
+ ```html
120
+
121
+ <!DOCTYPE html>
122
+
123
+ <html lang="ja">
124
+
125
+ <head>
126
+
127
+ <meta charset="UTF-8">
128
+
129
+ <title></title>
130
+
131
+ <script>
132
+
133
+
134
+
135
+ const sleepersGenerator = async function* (milliseconds) {
136
+
137
+ while (true) {
138
+
139
+ yield new Promise(resolve => { setTimeout(resolve, milliseconds); });
140
+
141
+ }
142
+
143
+ }
144
+
145
+
146
+
147
+ window.onload = function() {
148
+
149
+ const sleepers = sleepersGenerator(500);
150
+
151
+ Array.from(document.querySelectorAll('div'), async item => {
152
+
153
+ await sleepers.next();
154
+
155
+ item.style.background = "red";
156
+
157
+ })
158
+
159
+ }
160
+
161
+
162
+
163
+ </script>
164
+
165
+ </head>
166
+
167
+ <body>
168
+
169
+ <div>1</div>
170
+
171
+ <div>2</div>
172
+
173
+ <div>3</div>
174
+
175
+ <div>4</div>
176
+
177
+ <div>5</div>
178
+
179
+ <div>6</div>
180
+
181
+ <div>7</div>
182
+
183
+ <div>8</div>
184
+
185
+ <div>9</div>
186
+
187
+ <div>10</div>
188
+
189
+ </body>
190
+
191
+ </html>
192
+
193
+ ```
194
+
195
+ 上のコード、コピペしてブラウザに表示すればいちおう期待されてる動きになっとる思いますう。(一応ゆうたのは、`while(true)` になとって、終わらないイテレータになってしまうところが、ちょっとキモチワルイという点ですねん。)

6

ソース修正

2021/09/11 12:38

投稿

退会済みユーザー
test CHANGED
@@ -92,4 +92,6 @@
92
92
 
93
93
  でええわいね ➡ [サンプル](https://codepen.io/i8086x/pen/QWgvMeO?editors=1010)
94
94
 
95
+
96
+
95
- さらに上のコード詰めると、 Array.fromで配列にする必要はないねんから、[コレ](https://codepen.io/i8086x/pen/ZEyKXWq?editors=1010)でええやろ思います
97
+ さらに上のコード詰めるとすると質問の前提としてはArray.from 使うんがお題ゆうことやけど、for ... of ループさせるもんを配列にしとかなあかんわけではないねんから、[コレ](https://codepen.io/i8086x/pen/ZEyKXWq?editors=1010)でええやろ思いますー

5

ソース修正

2021/09/11 07:26

投稿

退会済みユーザー
test CHANGED
@@ -56,7 +56,7 @@
56
56
 
57
57
  const sleep = (millisec) => new Promise(resolve => {
58
58
 
59
- setTimeout(() => resolve(), millisec);
59
+ setTimeout(resolve, millisec);
60
60
 
61
61
  });
62
62
 

4

ソース修正

2021/09/11 07:19

投稿

退会済みユーザー
test CHANGED
@@ -92,4 +92,4 @@
92
92
 
93
93
  でええわいね ➡ [サンプル](https://codepen.io/i8086x/pen/QWgvMeO?editors=1010)
94
94
 
95
- さらに上のコード詰めると、 Array.fromで配列にする必要はないねんから、[コレ](https://codepen.io/i8086x/pen/ZEyKXWq?editors=1010)でええわ
95
+ さらに上のコード詰めると、 Array.fromで配列にする必要はないねんから、[コレ](https://codepen.io/i8086x/pen/ZEyKXWq?editors=1010)でええやろ思います

3

ソース修正

2021/09/11 07:17

投稿

退会済みユーザー
test CHANGED
@@ -91,3 +91,5 @@
91
91
  ```
92
92
 
93
93
  でええわいね ➡ [サンプル](https://codepen.io/i8086x/pen/QWgvMeO?editors=1010)
94
+
95
+ さらに上のコード詰めると、 Array.fromで配列にする必要はないねんから、[コレ](https://codepen.io/i8086x/pen/ZEyKXWq?editors=1010)でええわ。

2

ソース修正

2021/09/11 07:16

投稿

退会済みユーザー
test CHANGED
@@ -46,7 +46,11 @@
46
46
 
47
47
 
48
48
 
49
+ 上のやつ、一応ソレっぽく動くけど、なんや難しく考えすぎとったわ。
50
+
51
+
52
+
49
- これでええやん
53
+ これでええやん
50
54
 
51
55
  ```javascript
52
56
 

1

ソース修正

2021/09/11 07:02

投稿

退会済みユーザー
test CHANGED
@@ -39,3 +39,51 @@
39
39
  ```
40
40
 
41
41
  ➡ [サンプル](https://codepen.io/i8086x/pen/VwWbbdm?editors=1010)
42
+
43
+
44
+
45
+ ### 上のやつあかんわ。なんや難しく考えすぎとった。
46
+
47
+
48
+
49
+ これでええやん。
50
+
51
+ ```javascript
52
+
53
+ const sleep = (millisec) => new Promise(resolve => {
54
+
55
+ setTimeout(() => resolve(), millisec);
56
+
57
+ });
58
+
59
+ ```
60
+
61
+ ゆうsleep作っておいてからの
62
+
63
+ ```javascript
64
+
65
+ window.onload = async function() {
66
+
67
+
68
+
69
+ const items = Array.from(document.querySelectorAll('div'));
70
+
71
+
72
+
73
+ for (const item of items) {
74
+
75
+ await sleep(500);
76
+
77
+ item.style.background = "red";
78
+
79
+ }
80
+
81
+
82
+
83
+ }
84
+
85
+
86
+
87
+ ```
88
+
89
+ でええわいね ➡ [サンプル](https://codepen.io/i8086x/pen/QWgvMeO?editors=1010)