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

質問編集履歴

5

追記のまとめ

2021/08/21 12:21

投稿

watter
watter

スコア15

title CHANGED
File without changes
body CHANGED
@@ -46,7 +46,11 @@
46
46
  ```
47
47
  のように「➀を終了させる処理」は存在するのでしょうか。
48
48
 
49
+ 追記が多くなってしまったので少しまとめます。
50
+ ・returnを使う方法 → ➀内でさらに関数を(メソッドの引数などで)呼び出し、その関数内でres.json()を実行するときに➀を抜けられない。入れ子にしないなら使える。
49
51
 
52
+ この他に何かよい方法をご存知でしたらぜひお教えください
53
+
50
54
  ###追記
51
55
  実際には
52
56
  ```javascript

4

追記3

2021/08/21 12:21

投稿

watter
watter

スコア15

title CHANGED
File without changes
body CHANGED
@@ -103,4 +103,26 @@
103
103
  })
104
104
  })
105
105
  ```
106
- このコードではⅢもしくはⅣが実行された後にⅤが実行されエラーになると思います。
106
+ このコードではⅢもしくはⅣが実行された後にⅤが実行されエラーになると思います。
107
+
108
+ #追記3
109
+ ```javascript
110
+ router.post('/', (req, res) => { ・・・Ⅰ
111
+ --省略--
112
+ AAAA()
113
+ .then((flag) => { ・・・Ⅱ
114
+ if(flag) {
115
+ return res.json('data1': data1) ・・・Ⅲ
116
+ } else {
117
+ return res.json('data2': data2) ・・・Ⅳ
118
+ }
119
+ --省略--
120
+ })
121
+ .then((DATA) => { //res.json()の戻り値
122
+ --省略--
123
+ return res.json('data3': data3) ・・・Ⅴ
124
+ })
125
+ })
126
+ ```
127
+ この処理をreturnが使えない例として挙げたのはよくなかったかもしれません…
128
+ res.json()の実行後にⅠを抜ける共通処理的なものはあるのでしょうか。

3

DATAの追記

2021/08/21 12:14

投稿

watter
watter

スコア15

title CHANGED
File without changes
body CHANGED
@@ -71,7 +71,7 @@
71
71
  return res.json('data2': data2) ・・・Ⅳ
72
72
  }
73
73
  })
74
- .then((DATA) => { //DATAは使用しない
74
+ .then((DATA) => { //res.json()の戻り値
75
75
  --省略--
76
76
  })
77
77
 
@@ -97,7 +97,7 @@
97
97
  }
98
98
  --省略--
99
99
  })
100
- .then((DATA) => { //DATAは使用しない
100
+ .then((DATA) => { //res.json()の戻り値
101
101
  --省略--
102
102
  return res.json('data3': data3) ・・・Ⅴ
103
103
  })

2

returnの実装について追記

2021/08/21 12:07

投稿

watter
watter

スコア15

title CHANGED
File without changes
body CHANGED
@@ -80,4 +80,27 @@
80
80
  ```
81
81
  のようなコードを考えた時、
82
82
  ⅢもしくはⅣが実行されるのはⅡの関数内であり、このreturnではres.jsonの戻り値がDATAとして次の関数に渡されるだけでⅠを抜けられないことからreturn以外の方法があればと思い質問しました。
83
- 説明が不足しており、大変申し訳ありませんでした。
83
+ 説明が不足しており、大変申し訳ありませんでした。
84
+
85
+ ###追記2
86
+ 確かに上記のコードではⅤが先に実行されますね。
87
+ コードを修正します。
88
+ ```javascript
89
+ router.post('/', (req, res) => { ・・・Ⅰ
90
+ --省略--
91
+ AAAA()
92
+ .then((flag) => { ・・・Ⅱ
93
+ if(flag) {
94
+ return res.json('data1': data1) ・・・Ⅲ
95
+ } else {
96
+ return res.json('data2': data2) ・・・Ⅳ
97
+ }
98
+ --省略--
99
+ })
100
+ .then((DATA) => { //DATAは使用しない
101
+ --省略--
102
+ return res.json('data3': data3) ・・・Ⅴ
103
+ })
104
+ })
105
+ ```
106
+ このコードではⅢもしくはⅣが実行された後にⅤが実行されエラーになると思います。

1

returnの実装について

2021/08/21 11:59

投稿

watter
watter

スコア15

title CHANGED
File without changes
body CHANGED
@@ -44,4 +44,40 @@
44
44
  ➀を終了させる処理
45
45
  })
46
46
  ```
47
- のように「➀を終了させる処理」は存在するのでしょうか。
47
+ のように「➀を終了させる処理」は存在するのでしょうか。
48
+
49
+
50
+ ###追記
51
+ 実際には
52
+ ```javascript
53
+ router.post('/', (req, res) => {
54
+ --省略--
55
+ if (flag) {
56
+ return res.json('data1': data1)
57
+ } else {
58
+ return res.json('data2': data2)
59
+ }
60
+ })
61
+ ```
62
+ のように実装していたのですが、
63
+ ```javascript
64
+ router.post('/', (req, res) => { ・・・Ⅰ
65
+ --省略--
66
+ AAAA()
67
+ .then((flag) => { ・・・Ⅱ
68
+ if(flag) {
69
+ return res.json('data1': data1) ・・・Ⅲ
70
+ } else {
71
+ return res.json('data2': data2) ・・・Ⅳ
72
+ }
73
+ })
74
+ .then((DATA) => { //DATAは使用しない
75
+ --省略--
76
+ })
77
+
78
+ return res.json('data3': data3) ・・・Ⅴ
79
+ })
80
+ ```
81
+ のようなコードを考えた時、
82
+ ⅢもしくはⅣが実行されるのはⅡの関数内であり、このreturnではres.jsonの戻り値がDATAとして次の関数に渡されるだけでⅠを抜けられないことからreturn以外の方法があればと思い質問しました。
83
+ 説明が不足しており、大変申し訳ありませんでした。