質問するログイン新規登録

質問編集履歴

3

コメントアウトを追加

2020/11/26 15:44

投稿

tarakorakko
tarakorakko

スコア13

title CHANGED
File without changes
body CHANGED
@@ -17,36 +17,46 @@
17
17
  ###該当のソースコード
18
18
  以下の11行目が引数`'apple'`を渡したい行です。
19
19
 
20
- [ソースコードを実行する](https://jsfiddle.net/6avgo9f2/)
20
+ [ソースコードを実行する](https://jsfiddle.net/qbpvu7zk/)
21
21
  ```js
22
+ // func1, func2 を並列処理しつつ、結果は順次処理していく
22
23
  $(function() {
23
24
 
25
+ // 結果は順次処理
24
26
  const wrap = async function(func) {
25
27
  const res = await func();
26
- console.log( res );
28
+ console.log(res);
27
29
  return res;
28
30
  }
29
31
 
32
+ // func1, func2 を並列処理
30
- console.log("start");
33
+ console.log("並列処理開始");
31
34
  Promise.all([
32
35
  wrap( func1 ), // 引数を渡したい
33
36
  wrap( func2 )
37
+ ]).then(res=>{
38
+ console.log(res);
34
- ]).then(res=>{console.log(res);console.log("end")});
39
+ console.log("並列処理すべて終了");
40
+ });
35
41
 
42
+ // AJAXでデータを取得
36
43
  function func1(str=''){
37
44
  var def = new $.Deferred();
38
45
  console.log('start func1')
39
46
  setTimeout(function(){
47
+ const ajaxResponse1 = [{name:str+'太郎'},{nane:str+'次郎'}];
40
- def.resolve('response func1 ' + str);
48
+ def.resolve( ajaxResponse1 );
41
49
  },1000);
42
50
  return def.promise();
43
51
  }
44
52
 
53
+ // AJAXでデータを取得
45
54
  function func2(){
46
55
  var def = new $.Deferred();
47
56
  console.log('start func2');
48
57
  setTimeout(function(){
58
+ const ajaxResponse2 = [{name:'花子'},{nane:'良子'}];
49
- def.resolve('response func2');
59
+ def.resolve( ajaxResponse2 );
50
60
  },2000);
51
61
  return def.promise();
52
62
  }
@@ -71,17 +81,22 @@
71
81
  ```js
72
82
  $(function() {
73
83
 
84
+ // 結果は順次処理
74
85
  const wrap = async function(func) {
75
86
  const res = await eval(func); // evalで文字列を関数として処理する
76
- console.log( res );
87
+ console.log(res);
77
88
  return res;
78
89
  }
79
90
 
91
+ // func1, func2 を並列処理
80
- console.log("start");
92
+ console.log("並列処理開始");
81
93
  Promise.all([
82
94
  wrap( "func1('apple')" ), // 文字列で渡す
83
95
  wrap( "func2()" ) // 同じく文字列で渡す
96
+ ]).then(res=>{
97
+ console.log(res);
84
- ]).then(res=>{console.log(res);console.log("end")});
98
+ console.log("並列処理すべて終了");
99
+ });
85
100
 
86
101
  /*-- 以下略 --*/
87
102
  ```

2

誤字

2020/11/26 15:43

投稿

tarakorakko
tarakorakko

スコア13

title CHANGED
File without changes
body CHANGED
@@ -87,6 +87,6 @@
87
87
  ```
88
88
 
89
89
  ###質問
90
- これによって実現できたように思えるのですが、`exal`は避けるべきとの記事を方々で目にします。
90
+ これによって実現できたように思えるのですが、`eval`は避けるべきとの記事を方々で目にします。
91
91
 
92
- そこで`eval`を使うことなく引数'apple'を渡す方法を知りたいのですが、そのようなことは可能でしょうか?
92
+ そこで`eval`を使うことなく引数`'apple'`を渡す方法を知りたいのですが、そのようなことは可能でしょうか?

1

,を+に修正

2020/11/26 14:52

投稿

tarakorakko
tarakorakko

スコア13

title CHANGED
File without changes
body CHANGED
@@ -17,7 +17,7 @@
17
17
  ###該当のソースコード
18
18
  以下の11行目が引数`'apple'`を渡したい行です。
19
19
 
20
- [ソースコードを実行する](https://jsfiddle.net/hfct2sp7/)
20
+ [ソースコードを実行する](https://jsfiddle.net/6avgo9f2/)
21
21
  ```js
22
22
  $(function() {
23
23
 
@@ -37,7 +37,7 @@
37
37
  var def = new $.Deferred();
38
38
  console.log('start func1')
39
39
  setTimeout(function(){
40
- def.resolve('response func1 ', str);
40
+ def.resolve('response func1 ' + str);
41
41
  },1000);
42
42
  return def.promise();
43
43
  }