質問編集履歴

4

修正しました

2017/06/27 03:09

投稿

seri
seri

スコア422

test CHANGED
File without changes
test CHANGED
@@ -20,7 +20,11 @@
20
20
 
21
21
  async.eachSeries(arr, function(s, callback) {
22
22
 
23
+ console.log(x[i]);
24
+
23
- i++;
25
+ i++;
26
+
27
+ }
24
28
 
25
29
  }
26
30
 

3

修正しました。

2017/06/27 03:09

投稿

seri
seri

スコア422

test CHANGED
File without changes
test CHANGED
@@ -1,23 +1,31 @@
1
1
  exportsをして受け取った関数内で同期処理を書いているのですが、以下のような実装の場合変数が途中で変わる事があるおそれがあります。この場合どういった実装に変えればいいのでしょうか?
2
+
3
+
4
+
5
+ 追記:
2
6
 
3
7
  ```ここに言語を入力
4
8
 
5
9
 
6
10
 
7
- exports.Func=function(x){
8
-
9
- var y=x['y'];//Object型もしくはArray等の値を受け取り
11
+ var async = require('async');
10
12
 
11
13
 
12
14
 
13
- ----同期処理----
15
+ exports.Func=function(x){//x は['A', 'B', 'C', 'D', 'E', 'F']等の中身がランダムな配列
14
16
 
15
- async.timesSeries(y.length, function(i, callback){
16
17
 
17
- }
18
18
 
19
+ var i = 0;
20
+
19
- ---------------//ここの同期処理内で、外のスコープのyが他の命令によって書き換えられる恐れがある。
21
+ async.eachSeries(arr, function(s, callback) {
22
+
23
+ i++;
20
24
 
21
25
  }
22
26
 
23
27
  ```
28
+
29
+
30
+
31
+ 上記の変数のiは同時アクセスが有った場合上書きされてしまいますが、それでも大丈夫なのでしょうか?

2

修正

2017/06/27 03:08

投稿

seri
seri

スコア422

test CHANGED
File without changes
test CHANGED
@@ -12,9 +12,11 @@
12
12
 
13
13
  ----同期処理----
14
14
 
15
- for(var i=0;i<y.length;i++){}....
15
+ async.timesSeries(y.length, function(i, callback){
16
16
 
17
+ }
18
+
17
- ---------------//ここの同期処理内で、外のスコープのyが他の命令によって書き換えられる恐れがある。この同期処理
19
+ ---------------//ここの同期処理内で、外のスコープのyが他の命令によって書き換えられる恐れがある。
18
20
 
19
21
  }
20
22
 

1

修正

2017/06/26 21:54

投稿

seri
seri

スコア422

test CHANGED
File without changes
test CHANGED
@@ -6,15 +6,15 @@
6
6
 
7
7
  exports.Func=function(x){
8
8
 
9
- var y=x['y'];
9
+ var y=x['y'];//Object型もしくはArray等の値を受け取り
10
10
 
11
11
 
12
12
 
13
13
  ----同期処理----
14
14
 
15
- ...
15
+ for(var i=0;i<y.length;i++){}....
16
16
 
17
- ---------------
17
+ ---------------//ここの同期処理内で、外のスコープのyが他の命令によって書き換えられる恐れがある。この同期処理
18
18
 
19
19
  }
20
20