2017-05-23 16 views
0

リクエスト外でHTTP.request結果の結果を返そうとしています。ノードJS、外部varにhttp.request POSTを使用する方法?

function repromptFunction() { 
    var http = require('http'); 

    var options = { 
     host: 'api.domain.com', 
     port: 80, 
     path: '/path/file.json', 
     method: 'POST' 
    }; 

    http.request(options, function(res) { 
     res.setEncoding('utf8'); 
     var data = ''; 
     res.on('data', function (chunk) { 
      data += chunk; 
     }); 
     res.on('end', function() { 
      var recv = JSON.parse(data); 
      var repromptText = recv.forecast.txt_forecast.forecastday[0].fcttext_metric; 
      return repromptText; 
     }); 
    }).end(); 
} 

console.log('final value is ' + repromptFunction()); 

しかし毎回、未定義にconsole.logリターン:

は、ここに私のコードです。私はコードが非同期の方法で実行されることを理解します。

この未定義の結果をConsole.logに確実に受け取るにはどうすればよいですか?

+0

リクエストが非同期であるためプロミスを使用する必要があります – codtex

答えて

0

return repromptTextは、http.requestに渡された匿名関数から戻ります。 repromptText()関数はここでは何も返しません。 console.logをエンドコールバックに入れたり、そのコールバックで実行したい作業をトリガする必要があります。

関連する問題