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

回答編集履歴

3

先頭の余計なバッククォートを削除

2017/09/01 11:51

投稿

unau
unau

スコア2468

answer CHANGED
@@ -1,4 +1,4 @@
1
- `getImage(url) を同期関数にしたいのでしょうか、それとも非同期関数にしたいのでしょうか。
1
+ getImage(url) を同期関数にしたいのでしょうか、それとも非同期関数にしたいのでしょうか。
2
2
 
3
3
  という質問の意味がもしわからないとしたら、Node.js の基本的な仕組みを理解していないものと思われますので、その勉強が必要だと思います。
4
4
 

2

表示が崩れるので修正

2017/09/01 11:51

投稿

unau
unau

スコア2468

answer CHANGED
@@ -1,4 +1,5 @@
1
- ```getImage(url)``` を同期関数にしたいのでしょうか、それとも非同期関数にしたいのでしょうか。
1
+ `getImage(url) を同期関数にしたいのでしょうか、それとも非同期関数にしたいのでしょうか。
2
+
2
3
  という質問の意味がもしわからないとしたら、Node.js の基本的な仕組みを理解していないものと思われますので、その勉強が必要だと思います。
3
4
 
4
5
  現在のコードのまま ```getImage(url)``` が呼ばれるとどうなるか、を説明すると、```headers``` が初期化され、```options``` が初期化され、```request()``` が呼ばれて HTTP リクエストが飛んで ```request()``` から戻ってきます。で、```getImage()``` が終了します。ここに明示的な ```return``` がないので、暗黙的な ```return``` が実行されます。

1

曖昧な表現を明確に

2017/09/01 11:50

投稿

unau
unau

スコア2468

answer CHANGED
@@ -4,5 +4,5 @@
4
4
  現在のコードのまま ```getImage(url)``` が呼ばれるとどうなるか、を説明すると、```headers``` が初期化され、```options``` が初期化され、```request()``` が呼ばれて HTTP リクエストが飛んで ```request()``` から戻ってきます。で、```getImage()``` が終了します。ここに明示的な ```return``` がないので、暗黙的な ```return``` が実行されます。
5
5
  で、HTTP のレスポンスが返ってくると、```request()``` の第 2 引数に指定したコールバック関数が呼ばれます。このコールバック関数の中で ```encImg``` を返していますが、受け取る人はいません。
6
6
 
7
- 解決するには、```getImage()``` を同期化するか、非同期のまま動くよう、コールバック関数を引数に取るようにします。推奨されるのは後者でしょうね。
7
+ ```getImage()``` を呼び出した側で結果を得られるようにするには、```getImage()``` を同期化するか、非同期のまま動くよう、コールバック関数を引数に取るようにする」かします。推奨されるのは後者でしょうね。
8
8
  最初に言った、Node.js の基本的な仕組みを理解していない場合、ここで解決策の具体的なコードを示しても意味がないでしょう。