情報を取得してユーザーに送信するには、ノードサーバーが他のサーバーと接続する必要があります。このような状況では要求は非同期なので、通常はrequest-promiseなどの追加ライブラリを使用します。しかし、ここで私は多くのポイントから複数の呼び出しを持っているので、私はそれらを処理するための関数を作成しましたが、この解決法は機能しません。ノードjsは別の機能からの要求を約束します
apiCall1: function(req,res){
var info = fetchFromOtherServer();
console.log(info); // undefined
res.send(info)
}
apiCall2: function(req,res){
var info = fetchFromOtherServer();
console.log(info); // undefined
res.send(info)
}
function fetchFromOtherServer(){
var options = {"method":"POST", "headers":{...},"uri":"{...}"}
request(options, function(err,response,body){
if(!err && response.statusCode == 200){
console.log(body) // here is a body from other server
return body;
}
}
}
最初に、関数apiCall()を呼び出すと、fetchFromOtherServer関数が呼び出されます。しかし、要求が行われる前に、ノードは情報変数を未定義としてマークし、それをユーザに送信します。他のサーバーからの応答が得られるまでノードを待機させるようにコードを変更するにはどうすればよいですか?
今のところ、端末は「await」というフレーズでエラーを送信します。私のノードプロジェクトにES6を含めるにはどうしたらいいですか? package.jsonで何かしますか? – ampher911
'babel'や' typescript'を使用していない場合、ネイティブ 'async'サポートのために' node 7.x'が必要です。 – nilobarp